2015-10-29 111 views
0
PHP Version: 5.6.15RC1 
Compiler: MSVC11 (Visual C++ 2012) 
Architecture:x86 

我有問題json_encode荷蘭國際集團一多維PHP數組。 主要問題是沒有生成錯誤(json_last_error = 0)。PHP json_encode失敗沒有錯誤

該陣列由字符串索引並測試每個這些索引seperately已經陣列彙編內完成的已經在其外索引進行使用:

$test = json_encode($account[$q_id]); 
if (strlen($test) < 2) { 
    $error = json_last_error(); 
} 

通過幾個步進表明正確JSON輸出。然後在if語句中放置一個斷點來識別任何編碼問題,但是它從未停止在$ error ...行上。

數據庫連接:

$connection_cfg = array("Database" => $db["database"], "CharacterSet" =>  "UTF-8", "UID" => $db["uname"], "PWD" => $db["pword"], "ReturnDatesAsStrings" =>true); 
$this->connection = sqlsrv_connect($db["host"], $connection_cfg); 

我被困在如何進行調試此。

+0

我不明白。如果它產生了正確的JSON輸出,爲什麼它應該到'$ error'行呢? 'account [$ q_id]'的價值是什麼? – Barmar

+0

我看不出數據庫連接與此有關。一旦數據被提取到一個PHP數組中,它的來源並不重要。 – Barmar

+0

一個空的json字符串是'[]',它是2個字符。嘗試用'strlen($ test)== 2'替換'strlen($ test)<2'。 – x13

回答

0

空JSON字符串看起來是這樣的:

[] 

也就是2個字符。 您的錯誤檢測不起作用,因爲它檢查1個或更少的字符。

變化

if (strlen($test) < 2) { 
    $error = json_last_error(); 
} 

if (strlen($test) == 2) { 
    $error = json_last_error(); 
} 

而且你的錯誤檢測應該工作。

如果您無法解決JSON錯誤中指出的問題,請更新我們的錯誤。

-1

經驗教訓,在調試工具(netbeans手錶等)中總會有一些不信任。 當我看到一個隨機的'{'作爲輸出時(不知道爲什麼netbeans像這樣顯示它),我創建了錯誤檢查。 這是這是在一條線上破損如

var a=<?php echo $thejsonstuff ?> 

的JavaScript和我首先嚐試從netbeans的結果PHP的調試。