【问题标题】:echo Session array value- warning Illegal string offsetecho 会话数组值 - 警告 Illegal string offset
【发布时间】:2016-05-18 12:05:11
【问题描述】:

我正在尝试使用 SESSION 将购物车功能添加到网站中,这些项目已存储到 SESSION 但我收到此警告:当我尝试回显数组值时出现非法字符串偏移 'pcode'

$itemArray = array('pcode'=>$_GET['code']);
$_SESSION['cart_item'] = $itemArray;

这就是我将数组存储到会话中的方式

foreach ($_SESSION['cart_item'] as $item){
                echo $item['pcode'];
                }

这就是我如何回显我的商店数组。我对 PHP 很陌生,一直在尝试从头开始构建网站。我想知道为什么警告继续显示在我的页面上。谢谢

【问题讨论】:

  • 试试这个 foreach ($_SESSION['cart_item'] as $key=>$item){ echo $key.'-->'.$item; }

标签: php arrays session


【解决方案1】:

只有 $item 会给你带来价值:

$itemArray = array('pcode'=>'aaa');
$_SESSION['cart_item'] = $itemArray;
foreach ($_SESSION['cart_item'] as $key=>$item){
    echo $key; // this will print "pcode"
    echo $item; // this will print "aaa"
}

将数据附加到会话中:

$data = $_SESSION['cart_item']; // first get session data into any array
$data['newdata'] = 'newvalue'; // now add data 
$_SESSION['cart_item'] = $data; // again write session with newly added array

【讨论】:

  • 谢谢!我明白了这个想法及其现在的工作。顺便说一句,每次我尝试将新项目添加到 $_SESSION['cart_item'] 时,它似乎都会覆盖以前的项目,无论如何要解决这个问题?
  • 你是如何向会话中添加数据的>??
  • $itemArray = array('pcode'=>'aaa'); $_SESSION['cart_item'] = $itemArray;我发布的方式相同,但我认为我需要一个二维数组,对吗?
  • @kojh 我已经更新了上面的答案,用于将数据附加到会话中。尝试一下
  • 感谢您的帮助,但我使用 array_merge() 来做到这一点:)
【解决方案2】:

echo $item 您将在使用 foreach 时获得 $item['pcode'] 值,它为您提供 key => 值对,因此 'pcode' 是 key 而 $_GET['code'] 它在 foreach 中的值并且由于您只使用 $item 它将指向 $_GET['code'] 的值。

【讨论】:

    【解决方案3】:
    $_GET['code']='www';
    $itemArray = array('pcode'=>$_GET['code']);
    $_SESSION['cart_item'] = $itemArray;
    foreach ($_SESSION['cart_item'] as $item){
                    echo $item;
                    }
    

    【讨论】:

      【解决方案4】:

      您的数组项中没有带有pcode 的键。

      有一种方法可以检查是否有任何键array_key_exists

      bool array_key_exists ( mixed $key , array $array )
      

      任何更简单的查找内容的方法是打印数组并死掉,查看数组的内容,修复并重试。

      【讨论】:

        猜你喜欢
        • 2016-11-12
        • 2014-06-27
        • 1970-01-01
        • 2021-05-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-06
        • 2017-10-09
        相关资源
        最近更新 更多