我正在学习php,但是在练习时遇到了问题。我用项目值创建了一个多维数组,并且正在使用for循环打印这些值,但是我得到了
错误:未定义的偏移量
数组格式是关联的。
要求:
1)使用for循环/ foreach循环打印所有值
2)如果任何关联数组为空,请避免
3)检查它是数组还是单个值,例如某些值又具有自己的数组
$item_list=array(); //multidimensional array with associative values
echo '<pre>';print_r($item_list);
Array
(
[total_price] => 1200
[item_1] => Array
(
[item_name1] => xyz
[item_price1] => 100.00
)
[item_2] => Array
(
[item_name2] => abc
[item_price2] => 200.00
)
[item_3] =>
[item_4] => Array
(
[item_name3] => aaa
[item_price3] => 402.00
)
)
//我用来回显所有值的代码
for ($row = 0; $row < count($item_list); $row++) {
// if value contain array then go to nested for loop else print direct value
echo "<ul>";
for ($col = 0; $col < count($item_list[$row]); $col++) {
//echo "<li>".$item_list[$row][$col]."</li>";
echo "<li>".array_values($item_list[$row])[$col]."</li>";
}
echo "</ul>";
}
答案 0 :(得分:1)
由于数组是关联数组,因此无法在for
循环中使用数字索引访问值。而是在元素上使用foreach
循环:
foreach ($item_list as $key => $item_details) {
if (is_array($item_details)) {
echo "$key:\n";
foreach ($item_details as $name => $value) {
echo "\t$name: $value\n";
}
}
else {
echo "$key: $item_details\n";
}
}
输出:
total_price: 1200
item_1:
item_name1: xyz
item_price1: 100
item_2:
item_name2: abc
item_price2: 200
item_3:
item_4:
item_name3: aaa
item_price3: 402
请注意,您并不清楚要实现格式化的目的,所以我只是将输出保留为简单的行格式。向其中添加<ul>/<li>
结构会很容易。