2014-04-04 41 views
1

我有一個數組,通過來自javascript/jquery的POST請求。在php中,數組內容如下:在PHP中json_decoded數組 - 獲取鍵和值

[{"name":"Ta","def":"somestring"},{"name":"WSCall","def":"somestring"},{"name":"manual","def":"somestring"}] 

如何迭代此數組以獲取鍵和值?

當我這樣做:json_decode($_POST['shape_defs'])

我如何遍歷這個數組。這樣做foreach說:

()提供的foreach無效參數

+1

你json解碼了你的結果嗎? –

+0

sizeof(array)說0 – jmcclane

回答

2

儘管(當前)其他兩個答案確實得到工作代碼,但他們未能解決您爲什麼會遇到錯誤。

$data = json_decode($j); 
var_dump($data); 

這將產生一個對象,連鍵作爲屬性。一個對象無效傳遞給foreach,除非它實現了Traversable

你需要做的是:

$data = json_decode($j,true); 

這將使對象是關聯數組,這與foreach兼容,很可能是你的代碼的其餘部分。

+0

沒有傳遞第二個布爾參數,我沒有得到任何錯誤?如果你做'var_dump($ data)'它包含'foreach'中有效的對象數組 –

0
$j= '[{"name":"Ta","def":"somestring"},{"name":"WSCall","def":"somestring"},{"name":"manual","def":"somestring"}]'; 

$data = json_decode($j,true); 

foreach($data as $key=>$val){ 
foreach($val as $k=>$v){ 
    echo "Key :".$k." Value :".$v."<br />"; 
} 
} 
1

當有孩子的確切數量,你可以使用嵌套的foreach循環:

$json = '[{"name":"Ta","def":"somestring"},{"name":"WSCall","def":"somestring"}, {"name":"manual","def":"somestring"}]'; 
$decode = json_decode($json, true); 

foreach ($decode as $k1 => $v1) { 
    foreach ($v1 as $k2 => $v2) { 
     echo "$k2: $v2, "; 
    } 
    echo "<br>"; 
} 

它會輸出:

name: Ta, def: somestring, <br> 
name: WSCall, def: somestring, <br> 
name: manual, def: somestring, <br>