PHP如何将一维数组拆分为二维数组


PHP How to split a one dimensional array in two dimensional

我有一个一维数组,它看起来像这样:

$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_mapstr_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);