如何循环在$ _SESSION和
问题描述:
我已经创建了三个文件,在其中的一个我想作过部分输出的名称和价格上的环从我的数组的数组打印值
<?php
session_start();
?>
<?php
$a=array(
array('id'=>'1','name'=>'Milch','price'=>'12'),
array('id'=>'2','name'=>'Reis','price'=>'13'),
array('id'=>'3','name'=> 'Öl', 'price'=>'14'),
array('id'=>'4','name'=>'Salz','price'=>'15'),
array('id'=>'5','name'=>'Zucker','price'=>'16'),
);
if(empty($_SESSION['warenkorb'])){
echo 'Warenkorb leer';
}
else {
foreach($_SESSION['warenkorb'] as $key=>$value){
$_SESSION['warenkorb']=array();
print_r($value['name'].': '.'$'.$value['price'].PHP_EOL.'<br />');
}
}
?>
这是一个教训另一个文件,从它我只输出ID
<?php
session_start();
?>
?php
include 'produkte.php';
if(!isset($_SESSION['warenkorb'])){
$_SESSION['warenkorb']=array();
}
if(isset($_POST['id'])){
foreach($a as $key =>$value){
if($value['id']==$_POST['id']){
$_SESSION['warenkorb'][]= $_POST['id'];
}
}
}
print_r(count($_SESSION['warenkorb']));
?>
答
在第一个代码,你需要改变一些位在其他部分: -
else {
foreach($_SESSION['warenkorb'] as $key=>$value){ //iterate over SESSION array
foreach($a as $v){ //iterate over $a array
if($value == $v['id']){ //compare SESSION is with $a sub-array id
echo $v['name'].': '.'$'.$v['price'].'<br />'; // if match then echo name and price from sub-array
}
}
}
}
答
我不知道我理解正确的,我想你的问题的标题
最字面解释<?php
$a = array(
array('id'=>'1','name'=>'Milch','price'=>'12'),
array('id'=>'2','name'=>'Reis','price'=>'13'),
array('id'=>'3','name'=> 'Öl', 'price'=>'14'),
array('id'=>'4','name'=>'Salz','price'=>'15'),
array('id'=>'5','name'=>'Zucker','price'=>'16'),
);
您现在有一个名为$a
的数组,其中包含您的所有名称和价格。
if (empty($_SESSION['warenkorb'])) {
echo 'Warenkorb leer';
} else {
foreach ($_SESSION['warenkorb'] as $key => $value) {
您在$_SESSION['warenkorb']
上迭代。其中每个迭代$key
和$value
都设置有来自$_SESSION['warenkorb']
的另一项的键和值。
$_SESSION['warenkorb'] = array();
然而,第一循环在你的代码做的第一件事是重置$_SESSION['warenkorb']
作为一个空数组。
print_r($value['name'].': '.'$'.$value['price'].PHP_EOL.'<br />');
既然你重置你遍历数组,同时这条线将永远不会被再次执行,首末班时间是。然而,它仍然没有做什么,因为你试图打印的条目是在$a
。
}
}
?>
尝试这种情况:
<?php
$_SESSION['warenkorb'] = array(
array('id'=>'1','name'=>'Milch','price'=>'12'),
array('id'=>'2','name'=>'Reis','price'=>'13'),
array('id'=>'3','name'=> 'Öl', 'price'=>'14'),
array('id'=>'4','name'=>'Salz','price'=>'15'),
array('id'=>'5','name'=>'Zucker','price'=>'16'),
);
if (empty($_SESSION['warenkorb'])) {
echo 'Warenkorb leer';
} else {
foreach ($_SESSION['warenkorb'] as $key => $value) {
print_r($value['name'].': '.'$'.$value['price'].PHP_EOL.'<br />');
}
}
?>
很高兴帮助你:) :) –