2016-08-25 73 views
0

我已經搜索了許多地方找到答案,我找不到一個,所以請幫我理清這一點。 - 由於預先獲取數組索引鍵到變量 - 二維PHP數組

我有一個JSON字符串

{"first":{"val":100},"second":{"val":200},"third":{"val":300}} 

已被解碼和已被保存在一個PHP數組

$arr = json_decode($json, true); 

現在我試圖獲得這些第一,第二, etc ... values與sql查詢連接,但我無法得到這個排序,到目前爲止我已經嘗試過像下面這樣,

foreach ($arr as $assoc) { 
    foreach ($assoc as $value) { 

     $val=$value+0; 

     $sqlI = "UPDATE tblName SET fieldName = ".$val." WHERE fieldName1=".$assoc; 
     $conn->query($sqlI); 
    } 
} 

*注:fieldName1將具有唯一值..

我得到注意:數組字符串轉換的錯誤,我明白這是由於$ assoc命令是一個數組類型,但如何從這個數組中的關鍵?

+2

'tblField =。$ assoc' ...你還期望什麼? '$ assoc'是你在內部的'foreach()'中循環的數組...'也許你的意思是'$ value'?如果你想從foreach獲得密鑰,那麼使用'foreach($ array作爲$ key => $ value)'語法 –

+0

或者你打算更新 – Ghost

+0

Marc B,謝謝你的迴應:inner loop用於處理2D數組我試着你上面提到的方式,我認爲這是有用的,如果我想要的值,但我想數組索引,例如:$ arr ['first'] ['val'] = 100 .....然後我需要在SQL命令中的第一個? @@ :( – Darshan

回答

1

你的陣列應該是這樣的:

$arr = Array(
    'first' => array(
     'val' => 100 
    ), 
    'second' => array(
     'val' => 200 
    ), 
    'thirth' => array(
     'val' => 300 
    ), 
); 

您可以像這樣訪問他們:

echo $arr['first']['val']; // 100 

循環通過他們,像這樣:

foreach($arr as $val){ 
    echo $val['val']; // 100, 200, 300. 
} 

或帶鍵:

foreach($arr as $key => $val){ 
    echo "current key: '$key' with val '". $val['val'] ."'"; 
} 
+0

真棒Xorifelse ..只是做到了!謝謝非常指出$ val ['val']部分!:) – Darshan