2012-09-18 60 views
1

爲什麼不能正常工作?使用foreach循環查找變量POST數據

// I'm sending this data: $_POST['amount_1'] = '3'; 
$val = '1'; // This is coming from a foreach loop, but I'm specifying here for simplicity 
echo $_POST['amount_'.$val]; // Returns null 
echo $_POST['amount_1']; // Returns 3 

嘗試獲取POST值時不允許使用變量嗎?

編輯:爲每個請求發佈更多代碼。

$outgoing = array(); 

foreach($_POST as $key => $val): 
    if(strpos($key,'_number_')){ // Matching 'item_number_' would return false because of 0-indexing 
     $item_id = $val; 
     $test = str_replace('item_number_',$key); // Realized when pasting this that I didn't have a $replacement defined. 
     $quantity = $_POST['quantity_'.$test]; 

     $name = $_POST['lp-name']; 
     $email = $_POST['lp-email']; 
     $phone = $_POST['lp-phone']; 

    array_push($outgoing,array($test,$item_id,$quantity,$name,$email,$phone)); 
    } 
endforeach; 

$json = json_encode($outgoing); 

現在就開始工作。我沒有在我的str_replace()中定義的$replacement

+4

在$ val上做一個var_dump - 我猜測它可能有一些空白字符。 –

+0

更多的代碼也會很好。 :) –

+2

你提供的代碼看起來很好。請發佈完整的代碼。 –

回答

0

而不是做這個的,你可以在表單元素使用數組表示法:

<form> 
    <input name='amount[]' value='this is first'> 
    <input name='amount[]' value='this is second'> 
    <input name='amount[]' value='this is last'> 
</form> 

提交這份表格,以陣列形式發送數據:

echo $amount[0]; // this is first 
echo $amount[1]; // this is second 
echo $amount[2]; // this is last 

最良好的祝願,

Korvin

+0

我發現這種方法,而今天搜索我的問題。我一定會在將來使用它,但是這個項目是針對PayPal購物車的,因此我鎖定了他們的命名約定。 – geoff