我有一个一维数组,如下所示:
$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")
);
我尝试了str_split(),array_chunk()或explode()等不同的结果,但每次我最终得到第一个函数($ table)都是一维的,我不能单独访问每个元素
感谢每一位帮助:)
答案 0 :(得分:4)
答案 1 :(得分:3)
您可以使用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);
答案 2 :(得分:1)
您可以遍历外部数组中的每个数组:
for($i=0; $i<count($table); $i++){
$table[$i] = str_split($table[$i]);
}
答案 3 :(得分:1)
在foreach循环中使用str_split
foreach($table as $key=>$line)
{
$table[$key]=str_split($line);
}
答案 4 :(得分:0)
不确定您尝试了什么,但这应该有效:
foreach($table as $v)
{
$arr[] = str_split($v);
}
unset($v);
答案 5 :(得分:0)
您可以执行以下操作。只需将每个字符串拆分为字符。
$table = array("rnbqkbnr",
"pppppppp",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"PPPPPPPP",
"RNBQKBNR");
$newArray = array();
foreach ($table as $t) {
$newArray[] = str_split($t);
}
答案 6 :(得分:0)
此代码应该有助于解决您的问题。此外,它应该适用于各种数组大小。
$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);