2017-02-10 127 views
2

我從我們的數據庫(與GLua輸入)與PHP的信息,然後使用json_decode將其更改爲數組使用,但它返回NULL,而其他人是加工?json_decode返回NULL [{},{}]

// Get the RapSheet info from 'character_data_store' 
$rap = mysql_query("SELECT * FROM `character_data_store` WHERE `character_id` = '$srp_uid' AND `key`='RapSheet'"); 
while($rapsheet=mysql_fetch_assoc($rap)){ 
    $raps = $rapsheet['value']; 
}; 

然後我用

// Deal with the rapsheet JSON 
echo $raps; 
$raps = json_decode($rapsheet, true); 
echo var_dump($raps, TRUE); 

回聲的是,以檢查它的工作,該信息被成功扳回一,因爲它的回聲,雖然後續代碼var_dump返回

NULL布爾(真)

數據庫內容:

[{"ArrestedBy":"James Scott","Date":1483732483,"Duration":60,"LeaveReason":"Jail time served.","ArrestReason":"test"}] 

任何幫助將不勝感激!


試圖達倫的響應後:


我試圖

$rap = mysql_query("SELECT * FROM `character_data_store` WHERE `character_id` = '$srp_uid' AND `key`='RapSheet'"); 
$raps = array(); 
    while($rapsheet=mysql_fetch_assoc($rap)){ 
    $raps[] = $rapsheet['value']; 
}; 

// encode 
$rap = json_encode($raps, TRUE); 
echo $rap; 

這回:

[ 「[{\」 ArrestedBy \「: 「詹姆斯·斯科特」,「日期」:148373248 3,\ 「持續時間\」:60 \ 「LeaveReason \」:\ 「監獄的時間送達\」,\ 「ArrestReason \」:\ 「測試\」}]「] 所以,我想

echo $rap['ArrestedBy']; 

,並返回

[

回答

1

你試圖訪問不正確的範圍內的變量。 $rapsheet只能在您的while() {...循環內訪問,因爲它將成爲當前的一行數據。你想要做的是創建$raps作爲一個數組,並在其中插入行。從那裏你可以隨心所欲json_decode()。根據您獲得的行數,您可能需要遍歷$raps並解碼每個數組元素。

$raps = array(); 
while($rapsheet=mysql_fetch_assoc($rap)){ 
    $raps[] = $rapsheet['value']; 
}; 

// encode 
$rap = json_encode($raps, TRUE); 
+0

您好,我想這一點,但我仍然無法得到它的工作:( $ RAP =請求mysql_query(「SELECT * FROM'character_data_store' WHERE'character_id' = '$ srp_uid' 和'關鍵'= 'rapSheet'「); \t $斥責=陣列(); \t \t而($ rapsheet = mysql_fetch_assoc($ RAP)){ \t \t $斥責[] = $ rapsheet [ '值']; \t \t echo $ raps ['ArrestedBy']; \t}; – JamesScott

+0

請將您的代碼保留在您的答案中( *不是評論哈哈*)。什麼沒有用? – Darren

+0

對不起達倫,通常不是一個stackoverflow的人!此外,它不會迴應任何:/ – JamesScott