在会话变量中循环父数组

时间:2014-01-06 19:59:02

标签: php arrays multidimensional-array foreach session-variables

在测试代码以了解数组在存储到会话变量时如何工作时,我创建了以下存储数组:

$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个数组:

  • 数量| 3
  • SKUNumber | GL398-C
  • 姓名|大型小部件
  • UnitPrice | 34.95

但是,当我从代码中删除[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

我显然是以错误的方式循环遍历结果集,但不确定循环通过它以获得我正在寻找的结果的正确方法。感谢您的帮助。

3 个答案:

答案 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循环遍历您的数组,或者您可以使用我的代码段。