我有一个一维数组,它看起来像这样:
$table = array("rnbqkbnr",
"pppppppp",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"PPPPPPPP",
"RNBQKBNR" );
我想做的是使数组成为二维数组,每个元素都是自己的数组,这样我就可以访问每个字母。
类似这样的东西:
$arr= array(
array("r", "n", "b", "q", "k", "b", "n", "r"),
array("p", "p", "p", "p", "p", "p", "p", "p"),
array("0", "0", "0", "0", "0", "0", "0", "0"),
array("0", "0", "0", "0", "0", "0", "0", "0"),
array("0", "0", "0", "0", "0", "0", "0", "0"),
array("0", "0", "0", "0", "0", "0", "0", "0"),
array("P", "P", "P", "P", "P", "P", "P", "P"),
array("R", "N", "B", "Q", "K", "B", "N", "R")
);
我尝试了不同的fincs,如str_split()、array_cchunk()或explode(),但每次我得到第一个函数($table)时,它都是一维的,我无法单独访问每个元素。
感谢您的帮助:)
您已经可以访问每个字母了。
字符串是一系列字符(Php-Doc)
这项工作很好。
print_r($table[0][0]); // return r
您可以使用array_map
和str_split
来获得一个非常简单的解决方案:
<?php
$table = array(
"rnbqkbnr",
"pppppppp",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"PPPPPPPP",
"RNBQKBNR"
);
$table = array_map('str_split', $table); // thanks @RolandStarke
var_dump($table);
您可以循环遍历外部数组中的每个数组:
for($i=0; $i<count($table); $i++){
$table[$i] = str_split($table[$i]);
}
只需在foreach循环中使用str_split
foreach($table as $key=>$line)
{
$table[$key]=str_split($line);
}
您可以执行以下操作。只需将每个字符串拆分为个字符。
$table = array("rnbqkbnr",
"pppppppp",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"PPPPPPPP",
"RNBQKBNR");
$newArray = array();
foreach ($table as $t) {
$newArray[] = str_split($t);
}
这段代码应该有助于解决您的问题。此外,它应该适用于各种数组大小。
$table = array("rnbqkbnr",
"pppppppp",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"PPPPPPPP",
"RNBQKBNR");
for ($i = 0; $i != count($table); ++$i) {
if (isset($subArray)) {
unset($subArray);
}
for ($j = 0; $j != strlen($table[$i]); ++$j) {
$subArray[] = substr($table[$i], $j, 1);
}
$twoDimensionalArray[] = $subArray;
}
print_r($twoDimensionalArray);
不确定您尝试了什么,但这应该有效:
foreach($table as $v)
{
$arr[] = str_split($v);
}
unset($v);