2013-10-25 77 views
1

裏面那裏我處理相關的產品多家單位變量一個循環,我想這兩個添加到一個數組:在PHP數組中添加鍵值?

$pedido = array(); 

所以,

foreach($_POST as $post_key => $post_value){ 

     if ($post_value=="on") { 
      $nombreProducto = mysql_fetch_assoc($mySQL->query("SELECT nombre from productos WHERE id_producto='$post_key'")); 
      $cantidad = $_POST[$post_key."Number"]; 

      echo "<h1>".$nombreProducto['nombre']."</h1>"." Cantidad: ".$cantidad." <br><br>"; 
      $pedido["$nombreProducto"] = $cantidad; 
     } 
    } 

這是正確的:

$pedido["$nombreProducto"] = $cantidad; 

哪裏嘗試執行添加,然而的var_dump輸出是這樣的:

陣列(1){[ 「陣列」] =>串(1) 「3」}

不正是我想要既不格式。

+0

比你想要什麼?你爲什麼把變量放在引號中?你想''pedido [$ nombreProducto ['nombre']] = $ cantidad;'?你是SQL注入自己BTW ..''或1 = 1 - =無論什麼''會返回數據庫中的所有產品。 – h2ooooooo

+1

你真的不應該循環mysql查詢,至少不要在活服務器上。通常有更好的方法,特別是當你拿取! –

+0

我希望你閱讀我的完整答案,因爲你應該修正這個代碼還有很多其他問題。 –

回答

1

使用$pedido[$nombreProducto['nombre']] = $cantidad;而不是$pedido["$nombreProducto"] = $cantidad;

+0

對!還有一個問題,這是'var_dump'輸出 array(3){[「Laptop Asus N56VM」] => string(1)「3」[「Pantalla Samsung LED 40'」] => string(1)「 1「[」Tarjeta SD 32 GB ADATA Clase 10「] => string(1)」2「} 這意味着存儲的數字實際上是字符串,如果我想讓它們成爲數字,該怎麼辦? – diegoaguilar

+1

在大多數情況下,您只需使用數字字符串(如現在存儲的數字)來執行任何操作(從數據庫中獲取更多信息,回顯數字,將某些內容插入數據庫等)。但是如果你真的需要使用一個整數,使用'$ pedido [$ nombreProducto ['nombre']] =(int)$ cantidad;' – redelschaap

1

刪除引號和

$pedido[$nombreProducto['nombre']] = $cantidad; 

EDITED

看來$nombreProducto是一個數組,所以你需要指出的關鍵領域,所以我改變使用領域的「農佈雷」

如果您看到你的var_dump這是一個數組與密鑰"Array"這就是爲什麼你試圖將數組轉換爲字符串,它返回的單詞"Array"

+1

不解決問題:'$ nombreProducto'是一個數組。 –

+1

在雙引號中包含變量不會影響輸出... '$ t ='ddd'; echo $ t; // ddd echo「$ t」// ddd'使用雙引號告訴php檢查變量的每個單詞 – rorypicko

+1

你說得對(都),我用一些解釋編輯了答案,謝謝 – Sal00m

1

你不應該把變量本身放在引號中。刪除引號。

另外,由於您剛剛訪問上一行的$nombreProducto['nombre'],所以很明顯該變量是一個數組。您不能使用數組作爲鍵,只允許使用整數和字符串。所以使用標識它的東西,比如它的ID號。

0

下是沒有意義的事:

$pedido["$nombreProducto"] = $cantidad; 

什麼是你想在這裏做什麼?我想你想要做的是這樣的:

$pedido[$nombreProducto['nombre']] = $cantidad; 

你也可以試試輸出數組是這樣的:

print_r($pedido); 

我建議你,你不重新編寫MySQL查詢t需要循環它。這是出於安全和效率的原因。我也建議你使用mysqli而不是mysql,因爲mysql已被棄用和不安全使用。你不檢查是否設置了$ _POST [$ post_key。「Number」],至少在這個代碼中沒有。我希望你在對數據庫使用前清理/驗證$ _POST的輸入嗎?