2010-02-13 2 views
0

Я хочу знать причины, по которым эта переменная проходит пустую.У меня есть var_dump переменная и она пуста

<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> 

Вы можете увидеть $ продукта [ «имя»], как я могу напечатать ценность это после извлечения его значения в cart.php, как

экстрактами значения

list($aDoor, $variety,$productname) = split('_', $_POST['price']); 
$aDoor = array(); 
$variety = array(); 
$productname= array(); 

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

Теперь ниже Еогеасп Как я могу эхо печатать имя продукта один раз ..?

ответ

0

Теперь под контуром foreach, как я могу эхо печатать название продукта один раз ..?

print_r ($productname); 

Но если вы хотите увидеть каждое значение имени продукта внутри цикла:

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

    echo $c . '<br />'; // show product name 
} 

Кроме того, я не вижу ваш вторя эту строку кода с PHP:

<input style="width:10px; margin-left:9px; " name="price[]" type="checkbox" value="' . $variety['price'].'_'. $variety['variety']. '_'. $product['name'] . ' " /></form> 

в этом случае это не так, как показать значение в строке выше:

value="' . $variety['price'].'_'. $variety['variety']. '_'. $product['name'] . ' " 

вместо этого вам нужно обернуть его в PHP теги:

value="<?=$variety['price'].'_'. $variety['variety']. '_'. $product['name']?>" 
+0

Это не эхо, но у меня это в реальном коде. Большое спасибо. Я попробую print_r ($ productname) и echo $ c; – jona

+0

Это print_r $ productname Array ([0] => air jordan [1] => air jordan).он по-прежнему вторит переменной $ productname дважды, потому что в форме ввода он приходит в одно и то же свойство значения, и он приходит дважды. что вы думаете, если я открою другое поле ввода формы, и разместите там $ product ['name']? поэтому я могу использовать в cart.php и печатать только один раз. Я использовал Cyro foreach foreach ($ productname as $ name) { echo $ name. '
'; } для печати $ ProductName, отобразить его дважды Зайдите сюда по ссылке ниже http://www.nyhungry.com/example2.php?subject=4&id=2®ister=1&menu=38 – jona

+0

Solution То, что я сделал, добавьте еще один тег ввода формы и отправьте его «скрытым», а затем присвойте $ product ['name'] значение входного скрытого тега. Затем в cart.php получил его как $ productname = ['name']; затем напечатайте (#productname); и решение. – jona

1
foreach($productname as $name) { 
    echo $name . '<br />'; 
} 

или если вы хотите, чтобы связать имена продуктов с их другими значениями в $aDoor и $variety вы могли бы сделать:

foreach($productname as $index => $name) { 
    echo 'Name: ' . $name . '<br />'; 
    echo 'Variety: ' . $variety[$index] . '<br />'; 
    echo 'Price: ' . $aDoor[$index] . '<br />'; 
} 

EDIT:

Если я могу принять ваш комментарий означает, что все имена одинаковы в массиве $ ProductName, то вы можете сделать это вместо того, чтобы:

if(count($productname) > 0) { 
    echo 'Product Name: ' . $productname[0] . '<br />'; 
    foreach($variety as $index => $name) { 
    echo $name . ': $' . $aDoor[$index] . '<br />'; 
    } 
} 
+0

он сказал ниже петли foreach .... – Sarfraz

+0

@Sarfraz True. Я понял, что это значит снаружи. Если он имел в виду внутри, значит, у вас есть это, поэтому мы его охватили в обоих направлениях. – nortron

+0

@Cryo: я думаю, что ты прав :) – Sarfraz

0

Как я уже говорил в другой из ваших вопросов, вы не можете использовать раскол () на массиве. Вы заставляете PHP обрабатывать $ _POST ['price'] как массив, называя его «price []» в вашей форме. При разделении на массив:

$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) 

Вы также не создавая $ product в кризисе вашего извлечения. Вы создаете массив $ productname, но $ productname - это не то же самое, что $ product ['name']

Смежные вопросы