PHP就像数组中的行一样

时间:2014-02-08 12:09:49

标签: php arrays

我有这个结果的数组:

Array
(
    [A] => Array
        (
            [0] => A 
            [1] => B 
            [2] => C 
        )

    [B] => Array
        (
            [0] =>AA
            [1] =>BB
            [2] =>CC
        )

    [C] => Array
        (
            [0] =>AAA
            [1] =>BBB
            [2] =>CCC
        )
)

我希望像行一样打印并将此结果打印到每一行:

A    AA    AAA
B    BB    BBB
C    CC    CCC

如何使用foreach打印该结果?

foreach ($result as $kk => $arr)
{
   foreach($arr as $k=>$v)
    {
        if ( $k == 'A')
               echo $arr[0];
        if ( $k == 'B')
              echo $arr[1];
        if ( $k == 'B')
            echo $arr[2]."<br />";
    }
}

2 个答案:

答案 0 :(得分:1)

创建一个新的tmp变量来存储我们的新订单。

$tmp = array();

阵列有多深?在你的例子中,我们下降了3个级别..

$depth = 3;

您要排序的数组

$result = array(
    'a' => array( 'a', 'b', 'c' ),
    'b' => array( 'aa', 'bb', 'cc' ),
    'c' => array( 'aaa', 'bbb', 'ccc' ),
);

对于$ result中的每个级别,降至$ depth。

for ($i=0; $i<$depth; $i++)
{
    // Loop true our results and push them in to the right position in our $tmp array.
    foreach ($result as $row)
    {
        $tmp[$i][] = $row[$i];
    }
}

输出var_dump($ tmp):

array(3) {
  [0]=>
  array(3) {
    [0]=>
    string(1) "a"
    [1]=>
    string(2) "aa"
    [2]=>
    string(3) "aaa"
  }
  [1]=>
  array(3) {
    [0]=>
    string(1) "b"
    [1]=>
    string(2) "bb"
    [2]=>
    string(3) "bbb"
  }
  [2]=>
  array(3) {
    [0]=>
    string(1) "c"
    [1]=>
    string(2) "cc"
    [2]=>
    string(3) "ccc"
  }
}

当然..用foreach打印出你重新排序的数组:

foreach($tmp as $row) {
    echo "{$row[0]} {$row[1]} {$row[2]}";
}

会给你:

a aa aaa 
b bb bbb 
c cc ccc 

答案 1 :(得分:0)

如果您将输入表示为$ hash,则$ result将以您需要的格式显示数组:

$arr = array_values($hash);
$result = array();
$len = count($arr);
$lenNested = count($arr[0]);
for($i = 0; $i < $len; $i++){
    for($j = 0; $j < $lenNested; $j++){
     $result[$j][$i] = $arr[$i][$j];
    }
}

这只是$ hash的转置。现在,您可以逐行打印 $ result