2011-09-15 95 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

我有没有名誉:( –

相关问题