带有组合键的阵列上的Foreach

时间:2016-09-14 18:52:56

标签: php arrays foreach

我正在尝试循环遍历此数组并相应地回显结果,我的数组此时显示如下:

Array (
    [2016 Q1] => 692.00
    [2016 Q2] =>
    Array (
        [0] => 809.00
        [1] => 1.00
    )
    [2016 Q3] =>
    Array (
        [0] => 290.00
        [1] => 8.00
        [2] => 2.50
    )
)

我需要它来展示这样的东西:

2016 Q1 
692.00
2016 Q2
809.00
1.00
2016 Q3
290.00
8.00
2.50

虽然目前显示如下:

2016 Q1
692.00
2016 Q2
Array
2016 Q3
Array

这是我目前的剧本:

$result = array_merge_recursive($quarter_invoice, $quarter_ads, $quarter_account);

foreach ($result as $key => $value){
    echo $key.'<br>';
    echo $value.'<br>';
}

如何访问要显示的第二批数组?

2 个答案:

答案 0 :(得分:1)

只需implode()他们。 $value可能是也可能不是数组,因此强制数组使用(array)

foreach ($result as $key => $value){
    echo $key.'<br>';
    echo implode('<br>', (array)$value).'<br>';
}

答案 1 :(得分:0)

您的第一个元素不是数组,而是浮点数/单值。接下来的两个元素都是数组。你需要有更多的一致性。我假设你的第一个元素应该在数组中?像这样?

Array (
    [2016 Q1] => 
      Array (
        [0] => 692.00
    )
    [2016 Q2] =>
    Array (
        [0] => 809.00
        [1] => 1.00
    )
    [2016 Q3] =>
    Array (
        [0] => 290.00
        [1] => 8.00
        [2] => 2.50
    )
)

然后你的脚本看起来像这样

$result = array_merge_recursive($quarter_invoice, $quarter_ads, $quarter_account);

foreach ($result as $key => $value){
    echo $key."<br>";
    foreach($value as $element){
        echo $element."<br>;
    }
     echo "<br>";
}

如果我错了,你确实需要你提到的确切结构。做这样的事情

$result = array_merge_recursive($quarter_invoice, $quarter_ads, $quarter_account);

foreach ($result as $key => $value){
    echo $key."<br>";
    if(is_array($value)){
        foreach($value as $element){
             echo $element."<br>;
         }
     }else{
       echo $value;
     }
     echo "<br>";
}

这对于输出(可能只是内爆)来说似乎效率低下,但我认为在迭代和操作这些不同类型时,您需要做的不仅仅是输出。