我有一个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'];
}
}
}
我收到的输出如下:
注意:未定义的索引:
中的名称中的数组到字符串转换
答案 0 :(得分:1)
在你的foreach中使用join()函数,如下所示:
echo join('<br>', $val);
或者代替
echo $val['prices'];
写
echo $val['names']['prices'];
答案 1 :(得分:0)
这是你的问题......
// 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->getPrice()
返回字符串或数字......
foreach ($_SESSION['products'] as $val){
foreach($val['names'] as $name){
echo $name['name'];
echo $name['prices'];
}
}
答案 2 :(得分:-1)
此处的代码没有问题。我没有看到你试图回复或直接反映它们,所以请显示你专门回复的代码或上面的输出以及哪一行给你一个问题。
答案 3 :(得分:-1)
如果你想以它的价格回应每一个。
for($i=0;$i<count($_SESSION['products']['names']);$i++) {
echo $_SESSION['products']['names'][$i] . " " . $_SESSION['products']['names']['price'][$i];
}