PHP如何在二维

时间:2016-04-18 16:36:21

标签: php arrays multidimensional-array

我有一个一维数组,如下所示:

$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)都是一维的,我不能单独访问每个元素

感谢每一位帮助:)

7 个答案:

答案 0 :(得分:4)

您已经可以访问每个字母。

A string is series of characters (Php Doc)

这项工作很好。

print_r($table[0][0]); // return r

答案 1 :(得分:3)

您可以使用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);

答案 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);