使用foreach的数组中的多数组

时间:2016-03-23 02:29:53

标签: php arrays loops foreach

我正在使用foreach来回显数组多维数组。

我知道还有另一种简单的方法,但我想尝试使用foreach。

这是我的代码:

<?php
$cars = array(
    array("Volvo", 22, 18),
    array("BMW", 15, 13, 
        array(
            'satu' => 'heelo'
        )
    ),
    array("Saab", 5, 2),
    array("Land Rover", 17, 15, 
        array('satu','dua')
    )
);

foreach ($cars as $kebal)
{
    if (is_array ($kebal))
    {
        foreach ($kebal as $katak)
        {
            echo($katak);
            echo "<br>";
            echo "<br>";            
        }
    }
    else
    {
        echo ($kebal);
        echo "<br>";    
    }
}
?>

我得到的输出是:

Volvo

22

18

BMW

15

13


Notice: Array to string conversion in C:\xampp\htdocs\latihtubi\dataarray.php on line 42
Array

Saab

5

2

Land Rover

17

15


Notice: Array to string conversion in C:\xampp\htdocs\latihtubi\dataarray.php on line 42
Array

那么,如何正确编写代码? 感谢。

2 个答案:

答案 0 :(得分:2)

您遇到的问题是数组的大部分元素都是字符串或整数,但您还有2个数组元素。您最好的选择是首先测试值是否为数组,然后决定要做什么。

<?php
    $cars = array(
        array("Volvo",22,18),
        array("BMW",15,13,array('satu'=>'heelo')),
        array("Saab",5,2),
        array("Land Rover",17,15,array('satu','dua'))
    );

    function myLoop($inputData){
        if( is_array($inputData) ){
            foreach($inputData as $value){
                myLoop($value);
                echo "<br>";
            }
        } else {
            echo "$inputData<br>";
        }
    }

    myLoop($cars);
?>

答案 1 :(得分:2)

  

...但我想尝试使用foreach。

好的 - 您的代码不能正常工作的原因是当您到达数组时,例如satu => heelo你只是想回应它,因为你当时并没有处理它。

只需add another foreach到外面:

foreach ($cars as $carOptions) {
    foreach ($carOptions as $kebal) {
        if (is_array($kebal)) {
            foreach ($kebal as $katak) {
                echo $katak;
                echo "<br>";
                echo "<br>";            
            }
        } else {
            echo $kebal;
            echo "<br>";
        }
    }
}