PHP输出多维数组

时间:2018-10-04 15:06:29

标签: php arrays multidimensional-array

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


    array:3 [
      "First Name" => array:3 [
        0 => "BILLY"
        1 => "SALLY"
        2 => "TYLER"
      ]
      "Last Name" => array:3 [
        0 => "RAY"
        1 => "SUE"
        2 => "TERRIER"
      ]
      "HOBBY" => array:3 [
        0 => "PIANO"
        1 => "SKATING"
        2 => "BASKETBALL"
      ]
    ]

我希望最终输出如下:


    BILLY|RAY|PIANO|
    SALLY|SUE|SKATING|
    TYLER|TERRIER|BASKETBALL|

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



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

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


    BILLY|RAY|PIANO|

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

2 个答案:

答案 0 :(得分:2)

The array_column() function将从二维数组中获取一列。然后将它们全部塞在一起。

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

答案 1 :(得分:0)

如果所有三个子数组的大小始终相同,则可以使用for循环:     

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

$result = '';
$size = count($array["First Name"]);
for($i = 0; $i < $size; $i++){
   $result.= "{$array['First Name'][$i]}|{$array['Last Name'][$i]}|{$array['HOBBY'][$i]}\r\n";
}
echo $result;

enter image description here