2014-01-22 35 views
0

我有一個JSON數組(只有一行有許多屬性)這樣的屬性和值:PHP的 - 查找一個JSON格式

$row = '[{"ID":"0","Name":"user","Option":"yes"}]'; 

我可以接觸到的每一個值有:

$row->ID; $row->Name; ... 

我的問題是如何使用一個循環來發現的所有屬性和它們的值,而無需使用:

$ OBJ = json_decode($行);

回答

2

json_decode的第二個參數指定如果你給它true,它將返回一個數組而不是一個對象。

所以,如果我正確地理解你的問題,這應該是你在找什麼:

$row = '[{"ID":"0","Name":"user","Option":"yes"}]'; 
foreach (json_decode($row, true) as $key => $value) { 
    echo $key . ' = ' . $value . PHP_EOL; 
} 

希望這有助於:)

+1

噢,對不起。這是因爲他們的JSON被包裝在一個數組中。 對此進行迭代:'json_decode($ row,true)[0]'(僅限於此語法中的PHP 5.4) – Harold

1

除非後面爲什麼你不直接使用的理由json_decode ......如果是因爲您JSON是會得到(數組中只有一個項目),這是因爲複雜,你可以拼湊它拆開:

$row = '[{"ID":"0","Name":"user","Option":"yes"}]'; 

$row = substr($row, 2, strlen($row) - 4); // Removes [{ and }] 

$items = explode(',', $row); // Explodes into parts 

$final = array(); 

foreach($items as $item) { 
    $parts = explode(':', $item); // Key/value 

    $key = substr($parts[0], 1, strlen($parts[0]) - 2); // Remove quotes 
    $value = substr($parts[1], 1, strlen($parts[1]) - 2); // Remove quotes 

    $final[$key] = $value; 
} 

var_dump($final);