首页 > 解决方案 > PHP输出多维数组

问题描述

我已经在这个问题上停留了一段时间。我有一个多维数组,我想以某种方式输出。这是数组:

    数组:3 [
      “名字” => 数组:3 [
        0 => “比利”
        1 => “莎莉”
        2 => “泰勒”
      ]
      “姓氏” => 数组:3 [
        0 => "射线"
        1 => “苏”
        2 => “梗犬”
      ]
      “爱好” => 数组:3 [
        0 => "钢琴"
        1 => “滑冰”
        2 => “篮球”
      ]
    ]

我希望最终输出如下:

    比利|雷|钢琴|
    莎莉|苏|滑冰|
    泰勒|梗犬|篮球|

不幸的是,我有现有的代码:


    $输出 = '';
     foreach($tempArray as $key => $value){
         $output .= $value[array_search($key,$tempArray)].$delimiter;  
     }

它只输出每个数组的第一个索引,如下所示:

    比利|雷|钢琴|

所以我的问题是我如何得到剩下的两个值?我应该创建某种排序或数组和计数器,并以这种方式存储每个输出:$newArray[$counter] = $output

标签: phparraysmultidimensional-array

解决方案


array_column()函数将从二维数组中获取一列。然后把它们都塞在一起。

$array = [
    "First Name" => ["BILLY", "SALLY", "TYLER"],
    "Last Name" => ["RAY", "SUE", "TERRIER"],
    "HOBBY" => ["PIANO", "SKATING", "BASKETBALL"],
];

$result = implode("|", array_column($array, 0)) . "\n";
$result .= implode("|", array_column($array, 1)) . "\n";
$result .= implode("|", array_column($array, 2));
echo $result;

正如评论中所指出的,您可能并不总是知道子数组的长度。这意味着将其包装在一个循环中:

$iterations = count(reset($array));
$result = "";
for ($i = 0; $i <= $iterations; $i++) {
    $result .= implode("|", array_column($array, $i)) . "\n";
}

推荐阅读