我有以下数组,由$_SESSION
array(1) { ["products"]=> &array(4)
{ ["prod_count"]=> int(2)
[0]=> array(1) { ["product_id"]=> int(4)}
[1]=> array(1) { ["product_id"]=> int(10) }
[2]=> array(1) { ["product_id"]=> int(11) } } }
我尝试使用foreach对其进行排序。
<?php foreach($_SESSION['products'] as $key=>$my_value): ?>
<?php foreach($my_value as $product_id): ?>
<?=$product_id?>
<?php endforeach; ?>
<?php endforeach; ?>
它工作正常,我得到了product_id
,但它也给了我警告:
Warning: Invalid argument supplied for foreach() in /books_shop/templates/cart.php on line 6
就是这一行:
<?php foreach($my_value as $product_id): ?>
知道我在这里缺少什么吗?任何帮助将受到高度赞赏。
答案 0 :(得分:0)
这是因为并非会话中的所有值都是数组,请确保它是一个数组,然后才能在使用in_array的foreach循环中使用它,
<?php foreach($_SESSION['products'] as $key=>$my_value): ?>
<?php if(is_array($my_value )) {
foreach($my_value as $product_id): ?>
<?=$product_id?>
<?php endforeach; } ?>
<?php endforeach; ?>
首选代码结构
if(is_array($my_value )) {
foreach($my_value as $product_id):
echo $product_id;
endforeach;
}
答案 1 :(得分:0)
在将$my_value
传递给foreach之前,您应该先检查一下
if (is_array($my_value)) {
foreach ($my_value as $product_id) {
//your code here
}
}
答案 2 :(得分:0)
['products']
中的第一个元素是"prod_count"=> 2
,它不是数组。
试试这个:
<?php foreach($_SESSION['products'] as $key=>$my_value){ ?>
<?php if($key == 'prod_count') continue; ?>
<?php if(is_array($my_value)): ?>
<?php foreach($my_value as $product_id): ?>
<?=$product_id?>
<?php endforeach; ?>
<?php endif; ?>
<?php }; ?>