我正在使用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
那么,如何正确编写代码? 感谢。
答案 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>";
}
}
}