我创建了三个文件,其中一个我想在一个Section上循环输出我的数组中的名称和价格
<?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']));
?>
答案 0 :(得分:2)
只需使用
firewall-cmd --zone=public --add-port=5666/tcp
Error: COMMAND_FAILED: '/sbin/iptables -w2 -A IN_public_allow -t filter -m tcp -p tcp --dport 5666 -m conntrack --ctstate NEW -j ACCEPT' failed: iptables: No chain/target/match by that name.
Failed to apply rules. A firewall reload might solve the issue if the firewall has been modified using ip*tables or ebtables.
echo "<pre>"
打印print_r($_SESSION)
变量中的所有键值。
答案 1 :(得分:2)
我不确定我的解释是否正确,我尝试了对你问题标题的最直接的解释
var firstname;
var lastname;
var height;
firstname = prompt("Please enter first name of player 1", "");
if (firstname != null && firstname != "") {
document.writeln("<td>" + firstname + "</td>");
} else {
document.writeln(firstname = "First name not supplied");
}
lastname = prompt("Please enter Last name of player 1", "");
if (lastname != null && lastname != "") {
document.writeln("<td>" + lastname + "</td>");
} else {
document.writeln(lastname = "Last name not supplied");
}
height = prompt("Please enter height of player 1", "");
if (height != null && height != "") {
document.writeln("<td>" + height + "</td>");
} else {
document.writeln(height = "Height not supplied");
}
您现在拥有一个名为<?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
试试这个:
}
}
?>
答案 2 :(得分:1)
在第一段代码中,您需要更改 else 部分中的一些内容: -
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
}
}
}
}