Php 我有一个变量,它是空的

Php 我有一个变量,它是空的,php,Php,我想知道这个变量传递为空的原因 <form action="cart.php" method="POST"> <input style="width:10px; margin-left:9px; " name="price[]" type="checkbox" value="' . $variety['price'].'_'. $variety['variety']. '_'. $product['name'] . ' " /></form> 现在,在fo

我想知道这个变量传递为空的原因

<form action="cart.php" method="POST">
<input style="width:10px; margin-left:9px; " name="price[]" type="checkbox" value="' . $variety['price'].'_'. $variety['variety']. '_'. $product['name'] . ' "  /></form>
现在,在foreach循环下面,我如何才能回显一次productname的打印

现在,在foreach循环下面,我如何 是否回显一次productname的打印

但是,如果您想在循环中看到product name的每个值:

foreach ($_POST['price'] as $p)
{
  list($a, $b,$c) = explode('_', $p);
  $aDoor[] = $a;
  $variety[] = $b;
  $productname[] = $c;

  echo $c . '<br />'; // show product name
} 
相反,您需要将其包装在php标记中:

value="<?=$variety['price'].'_'. $variety['variety']. '_'. $product['name']?>"
value=“”
编辑:

如果我可以将您的评论理解为$productname数组中的所有名称都相同,那么您可以这样做:

if(count($productname) > 0) {
  echo 'Product Name: ' . $productname[0] . '<br />';
  foreach($variety as $index => $name) {
    echo $name . ': $' . $aDoor[$index] . '<br />';
  }
}
if(count($productname)>0){
回显“产品名称:”。$productname[0]。
; foreach($index=>$name){ 回显$name.':$'.$aDoor[$index].
; } }
正如我在您的另一个问题中所述,您不能在数组上使用split()。您在表单中将$_POST['price']命名为“price[],从而迫使PHP将其视为一个数组。在阵列上拆分时:

$arr = array('a', 'b', 'c');
list($a, $b, $c) = split($arr);
您将得到以下结果:

$a = 'Array';
$b = NULL;
$c = NULL;
list($aDoor, $variety,$productname) = explode('_', $_POST['price'][0]);
                                                                  ^^^   (note the array notation)
您必须执行以下操作:

$a = 'Array';
$b = NULL;
$c = NULL;
list($aDoor, $variety,$productname) = explode('_', $_POST['price'][0]);
                                                                  ^^^   (note the array notation)

您也没有在提取脚本中创建$product变量。您正在创建$productname阵列,但$productname与$product['name']不同。

@Sarfraz-True。我认为那是指外面。如果他指的是内部,那么你就得到了,所以我们从两个方面都得到了它。代码在上面很好,谢谢!伙计们唯一的问题是,如果有两个品种,就会有两个价格。我设置它的方式是两个或三个品种的一个名称,现在它显示的是一个品种的相同名称及其价格,另一个品种的相同名称。我可能没有很好地解释自己。它是用户选择的一次显示名称和其余品种。希望我现在已经解释清楚了。上面的代码很好,但是名字在外面,打印一次。然后其他的种类,比如:Air jordan女子:$50男子:$30儿童:$15 Air jordan是名字,下面的种类和价格。@jona我更新了我的答案,我认为可以解决你的问题,让我知道。这里没有回音,但我有真实的代码。非常感谢。我将尝试打印($productname)和回音$c;这是$productname数组([0]=>air jordan[1]=>air jordan)的打印格式。它仍然会两次回显$productname变量,因为在表单输入中,它会在相同的值属性中出现,并且出现两次。如果我打开另一个隐藏的表单输入字段并将$product['name']放入其中,您会怎么想?所以我可以在cart.php中使用,并且它只打印一次。我曾使用Cyro foreach foreach($productname as$name){echo$name.
;}打印$productname时,它会显示两次。转到下面的链接解决方案我所做的是添加另一个表单输入标记并将其发送到“隐藏”中,然后将$product['name']分配给输入隐藏标记的值。然后在cart.php中,它像$productname=['name']一样接收到它;然后打印(#产品名称);还有解决方案。@jona:为它创建一个新的文本框或隐藏字段,这样它只会在那里出现一次怎么样?我所做的是,将它隐藏起来,然后现在它打印一次,然后根据用户的选择打印出不同的文本。
if(count($productname) > 0) {
  echo 'Product Name: ' . $productname[0] . '<br />';
  foreach($variety as $index => $name) {
    echo $name . ': $' . $aDoor[$index] . '<br />';
  }
}
$arr = array('a', 'b', 'c');
list($a, $b, $c) = split($arr);
$a = 'Array';
$b = NULL;
$c = NULL;
list($aDoor, $variety,$productname) = explode('_', $_POST['price'][0]);
                                                                  ^^^   (note the array notation)