2012-12-15 25 views
-1

這裏返回null是我的代碼:json_decode上一個有效值PHP

echo '<br/>'; 
    echo 'Json data from DB '.json_encode($output); 
    $data=array(); 
    $array=json_decode($output,true); 
    echo '<br/>'; 
    echo 'Concerted into an array '.json_encode($array); 

這裏是輸出:

Json data from DB [{"0":"1","key-1":"1","1":"1","key-2":"1","2":"1","key-3":"1","3":"1","key-4":"1"}] 
Concerted into an array null 

爲什麼json_devode返回null?如果我嘗試相同的這樣的:

$data = '[{"0":"1","key-1":"1","1":"1","key-2":"1","2":"1","key-3":"1","3":"1","key-4":"1"}]'; 

// convert to an array 
$data = json_decode($data, true); 

然後它通常打印出來:

Json data from DB [{"0":"1","key-1":"1","1":"1","key-2":"1","2":"1","key-3":"1","3":"1","key-4":"1"}] 
Concerted into an array {"0":"1","key-1":"1","1":"1","key-2":"1","2":"1","key-3":"1","4":"1","key-4":"1"} 
+0

三重檢查您嘗試解碼的變量! – deceze

回答

4

由於json_decode採用一個字符串和$output不是字符串(由json_encode所證明:它是一個數組)。

1

你似乎在混合起來。在你的例子中,$output似乎已經是一個數組了,你想再次解碼它?怎麼樣?

當你這樣做:

json_encode($output); 

它返回一個正確的JSON對象,這意味着$output已經是一個數組。而且你不能json_decode一個非JSON對象。您似乎可以直接使用$output,或者您需要更清楚地說明您的問題。