【问题标题】:Multidimensional session php array echoing多维会话php数组回显
【发布时间】:2015-11-26 01:03:42
【问题描述】:

我有一个 PHP 会话数组,它可以算作多维数组,基本上我正在尝试将数据存储在我的会话数组中,并且我成功地获得了任务的那部分。主要问题是,我无法具体回应它们,我必须使用 var_dump。当我尝试用 echo 打印它们时,我收到一条通知,上面写着数组到字符串的转换。请任何帮助我将不胜感激如何使用他们自己的特定键或值打印它们。代码如下:

if (!is_array($_SESSION['products']['names'])){

  $_SESSION['products']['names'] = array();
  $_SESSION['products']['names']['prices']= array();

  }else {

    $pros = $_SESSION['products']['names'];

    if (in_array($product->getName(), $pros, true)){

    echo 'The product is available in your basket';

  } else {

    array_push($_SESSION['products']['names'],$product->getName());
    array_push($_SESSION['products']['names']['prices'], $product->getPrice(Currency::getCurrentCurrency()));


    foreach ($_SESSION['products']  as  $val){

      echo $val['names'];
      echo $val['prices'];

    }
  }

}

我收到的输出如下:

注意:未定义的索引:名称在

数组到字符串的转换

【问题讨论】:

  • print_r 打印变量完美。你在这段代码的哪一行遇到了问题?
  • print_r 行,因为它用引号打印它,我不希望它是真的。因为 echo 有助于更清楚地打印它以及我想要打印的方式
  • echo 仅打印字符串。数组不是字符串。您必须使用 foreach 并打印数组中的每一项。
  • 这就是我实际上想要做的事情,你能帮我看看我如何用 foreach 打印它们

标签: php arrays session multidimensional-array echo


【解决方案1】:

在你的 foreach 中使用 join() 函数,如下所示:

echo join('<br>', $val);

或者代替

echo $val['prices'];

echo $val['names']['prices'];

【讨论】:

  • 你有更高效的解决方案吗?
  • 我认为你应该完全重构这段代码。像 $_SESSION['products'] 这样的 Stg 可以包含关联数组中的所有详细信息:id、name、price 等。
【解决方案2】:

这是你的问题...

// Here your assigning `['names']` as a string..
array_push($_SESSION['products']['names'],$product->getName());

// Then here you're overwriting the string with an array...
array_push($_SESSION['products']['names']['prices'], $product->getPrice(Currency::getCurrentCurrency()));

把第一个改成这个..

array_push($_SESSION['products']['names']['name'],$product->getName());

假设$product-&gt;getPrice() 返回一个字符串或一个数字...

foreach ($_SESSION['products']  as  $val){
    foreach($val['names'] as $name){
        echo $name['name'];
        echo $name['prices'];
    }
}

【讨论】:

  • 部分工作,但仍然数组到字符串的转换错误
  • 没有充满通知的解决方案 :) 未定义的名字我真的不知道该怎么办
  • array_push() 期望参数 1 为数组,在未定义索引中给出 null:为 foreach() 提供的无效参数中的名称
【解决方案3】:

这里的代码没有问题。我没有看到您尝试直接回显或转储它们,因此请显示您正在回显它们的代码或上面的输出以及哪一行给您带来了问题。

【讨论】:

  • 这是一个数组.. array_push($_SESSION['products']['names'],$product-&gt;getName()); ..这是一个数组到字符串的转换echo $val['names']; .. 显然他的代码有问题
  • @Pamblam echo $val['names'] 不是显示的原始代码。代码变了
  • 是的,他是对的,我已更改为代码抱歉混淆
  • 哦,如果答案被编辑,我会删除反对票。
【解决方案4】:

如果你想用它的价格回应每一个。

for($i=0;$i<count($_SESSION['products']['names']);$i++) {
echo $_SESSION['products']['names'][$i] . " " . $_SESSION['products']['names']['price'][$i];
}

【讨论】:

  • 那是因为“names”是一个关联数组,没有['names'][$i]
  • 你遇到了什么错误? @Pamblam array_push 不创建关联数组
猜你喜欢
  • 2016-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-19
  • 1970-01-01
  • 2015-11-20
相关资源
最近更新 更多