PHP 就像数组中的行一样



>我有数组 a 具有以下结果:

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 />";
    }
}

创建一个新的 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 

如果您将输入表示为 $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

最新更新