在测试代码以了解数组在存储到会话变量时如何工作时,我创建了以下存储数组:
$id=17; //product #17
$_SESSION['cart']['items'][$id]=array(
'quantity'=>1,
'SKUNumber'=>'GL335-a',
'Name'=>'Widget',
'UnitPrice'=>14.95
);
$id=25;
$_SESSION['cart']['items'][$id]=array(
'quantity'=>3,
'SKUNumber'=>'GL398-c',
'Name'=>'Mega-Widget',
'UnitPrice'=>34.95
);
$id=19;
$_SESSION['cart']['items'][$id]=array(
'quantity'=>1,
'SKUNumber'=>'GL335-a',
'Name'=>'Widget',
'UnitPrice'=>14.95
);
我对如何遍历Key>感到困惑ITEM级别的值:
foreach($_SESSION['cart']['items'][25] as $key=>$value) // echo/loop all stored vaules in the item 25 array in session cart
{
// and print out the values
echo $key." | ".$value."<br />";
}
正确生成第25项中存储的1个数组:
但是,当我从代码中删除[25]时,我得到:17 |数组,25 |数组,13 |排列 并发出警告:“注意:数组转换为字符串...”
我想要制作的是:
数量:1 | SKUNumber:GL335-a |名称:Widget | UnitPrice:14.95 数量:3 | SKUNumber:GL398-c |名称:Mega-Widget | UnitPrice:34.95 数量:1 | SKUNumber:GL378-b |名称:Super Widget | UnitPrice:29.95我显然是以错误的方式循环遍历结果集,但不确定循环通过它以获得我正在寻找的结果的正确方法。感谢您的帮助。
答案 0 :(得分:1)
尝试...
foreach($_SESSION['cart']['items'] as $id=>$arr) {
foreach ($arr as $key => $value) {
echo $key.":" .$value." | ";
}
echo "<br />";
}
OR
foreach($_SESSION['cart']['items'] as $id=>$arr) {
echo "quantity: $arr['quantity'] | SKUNumber: $arr['SKUNumber'] | Name: $arr['Name'] | UnitPrice: $arr['UnitPrice'] <br />";
}
答案 1 :(得分:1)
您正在尝试通过回显值来序列化数组,这就是您收到警告和意外结果的原因。尝试将$ value作为数组处理,而不是仅仅回显它。或者在$ value中循环
答案 2 :(得分:1)
<?php
foreach($_SESSION['cart']['items'] as $arr)
{
echo "quantity: $arr['quantity'] | SKUNumber: $arr['SKUNumber']: GL378-b | Name: $arr['Name'] | UnitPrice: $arr['UnitPrice']";
}
关于Notice: Array to string conversion in
,您打算打印$value
这是一个不是字符串的数组,这就是您收到该通知的原因。
您应该使用另一个foreach
循环遍历您的数组,或者您可以使用我的代码段。