2011-09-15 89 views
8

什麼導致我的代碼錯誤?json_decode()期望參數1是字符串,給定的數組

$query = $this->db->query("SELECT * FROM tour_foreign ORDER BY id desc"); 
     $data = array(); 
     foreach ($query->result() as $row) 
      $data[] = array('guide' => $row->guide); 

      echo json_decode($data); //Line 167 

錯誤:

erro: json_decode() expects parameter 1 to be string, array given: Line Number: 167 

UPDATE:

如果使用json_encode,不json_decode我的輸出是這樣的:

[{"guide":["\u0633\u06cc\u062f \u0633\u0639\u06cc\u062f \u062f\u0627\u062f\u0627\u0634\u0632\u0627\u062f\u0647"]},{"guide":["\u0633\u06c‌​c\u062f \u0633\u0639\u06cc\u062f \u062f\u0627\u062f\u0627\u0634\u0632\u0627\u062f\u0647"]},{"guide":null}] 

他們是波斯語。

+0

您正在傳遞一個數組,其中需要一個字符串。你之前正在創建數組 - 這是必要的嗎?爲什麼不直接使用'$ row-> guide'? –

+1

你想完成什麼? –

+0

你想在這裏做什麼? –

回答

32

我想你想json_encode,而不是json_decode

+0

如果使用'json_encode'我的輸出是這樣的:'[{「guide」:[「\ u0633 \ u06cc \ u062f \ u0633 \ u0639 \ u06cc \ u062f \ u062f \ u0627 \ u062f \ u0627 \ u0634 \ u0632 \ u0627 \ u062f \ u0647「]},{」guide「:[」\ u0633 \ u0635 \ u06cc \ u062f \ u0633 \ u0639 \ u06cc \ u062f \ u062f \ u0627 \ u062f \ u0627 \ u0634 \ u0632 \ u0627 \ u062f \ u0647「]}, {「guide」:null}]',它們是波斯文字 –

+0

@Selena:'\ u0633'字符只是編碼的Unicode字符。第一個'指南'是'سیدسعیدداداشزاده'。是對的嗎? –

+0

是的,我該怎麼做才能顯示它? –

1

json_decode()用於將json字符串解碼爲數組/數據對象。 json_encode()從數組或數據創建一個json字符串。你正在使用我的朋友錯誤的功能,試試json_encode();

1

這裏,同時從用戶配置文件Facebook的JSON對象提取名

$uname=json_encode($userprof); 
$uname=json_decode($uname); 
echo "Welcome " . $uname -> name ; 
+1

非常感謝!幫助我的問題! –

+0

呃...我錯過了什麼嗎?這是一個完整的禁止操作... –

7

你的解碼未設置爲true,我正面臨着類似的問題的解決方案。如果您無權將源設置爲true。下面的代碼將爲您解決它。

$WorkingArray = json_decode(json_encode($data),true); 
2

卡里姆!!!!謝謝

php -------------------------------------------- ---------------------------------

header('Content-type: application/json'); 
header("access-control-allow-origin: *"); 
... 
.... 
     $answer = json_decode(json_encode($_GET['json']), true); 

     //echo $answer[0]['preguntaid'] ; 

     echo $_GET['jsoncallback'] . '(' . json_encode($answer) . ');'; // for JSONP 

php --------- ----------------------------------------------

jQuery的------------------------------------------------- ------ ...

$.ajax({ 
       url: 'http:XXXXXXXXXvalidar_respuestas.php', 
       dataType: 'jsonp', 
       type: "GET", 
       jsonp: 'jsoncallback', 
       crossDomain: true, 
       data : { json : [{"preguntaid":151,"alternativa":427,"respuesta":"false"},{"preguntaid":151,"alternativa":428,"respuesta":"true"}] } , // { } 
       timeout: 5000, 
       success: function(data){ 

...`

WORKS對我來說

+0

這似乎不是對原始海報的問題的答案。如果您想對另一個答案發表評論,對該答案發表評論會更合適。 –

+0

我有沒有名譽:( –

相關問題