2017-08-25 58 views
0

我已经创建了三个文件,在其中的一个我想作过部分输出的名称和价格上的环从我的数组的数组打印值

<?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']));   
    ?> 

回答

1

在第一个代码,你需要改变一些位在其他部分: -

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 
      } 
     } 
    } 
} 
+0

很高兴帮助你:) :) –

2

只使用
echo "<pre>"
print_r($_SESSION)
到首席t $_SESSION变量中的所有关键值。

+0

这是我得到的输出: 阵列([warenkorb] =>数组())阵列([warenkorb] =>数组()) – MOS

+0

@ALQAM这意味着你在SESSION数组 – Gaur93

+0

中没有任何与'warenkrob'键相关的值,你可以使用$ _SESSION ['warenkorb']检查数组中是否有任何值长度 – Kathara

2

我不知道我理解正确的,我想你的问题的标题

最字面解释
<?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 />'); 
    } 
} 
?>