2011-09-15 18 views
8

¿qué causa el error en mi código?json_decode() espera que el parámetro 1 sea una cadena, matriz dada

$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 

error:

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

ACTUALIZACIÓN:

si el uso de json_encode, no json_decode mi salida es la siguiente:

[{"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}] 

son palabra persa.

+0

Está pasando una matriz donde se espera una secuencia. Está creando la matriz en la línea anterior, ¿es eso necesario? ¿Por qué no simplemente usar '$ row-> guide' directamente? –

+1

¿Qué estás tratando de lograr? –

+0

¿Qué estás tratando de hacer aquí? –

Respuesta

32

Creo que quieres json_encode, no json_decode.

+0

si el uso de 'json_encode' mi salida es esto:' [{"guide": ["\ u0633 \ u06cc \ u062f \ u0633 \ u0639 \ u06cc \ u062f \ u062f \ u0627 \ u062f \ u0627 \ u0634 \ u0632 \ u0627 \ u062f \ u0647 "]}, {" guide ": [" \ u0633 \ u06cc \ u062f \ u0633 \ u0639 \ u06cc \ u062f \ u062 \ u0627 \ u062f \ u0634 \ u0632 \ u0627 \ u062f \ u0647 "]}, {"guide": null}] ', son la palabra persa –

+0

@Selena: los caracteres' \ u0633' son solo caracteres Unicode que están codificados. La primera 'guía' es' سید سعید داداشزاده'. ¿Está bien? –

+0

sí, ¿qué hago para mostrarlo? –

1

json_decode() se utiliza para decodificar una cadena json a una matriz/objeto de datos. json_encode() crea una cadena json a partir de una matriz o datos. Estás utilizando la función incorrecta, amigo, prueba json_encode();

1

aquí es la solución para un problema similar que estaba frente al extraer el nombre del perfil de usuario de facebook objeto JSON

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

¡Muchas gracias! ¡Ayudó con mi problema! –

+0

Uhm ... ¿Me estoy perdiendo algo? Este es un completo no-operativo ... –

7

su decodificación no se establece en true. Si no tiene acceso, configure el origen en verdadero. El siguiente código lo arreglará por ti.

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

Kareem !!!! gracias

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){ 

... `

OBRAS para mí

+0

Esto no parece ser una respuesta a la pregunta del cartel original. Si desea comentar otra respuesta, sería más apropiado hacer un comentario sobre esa respuesta. –

+0

No tengo reputación :( –

Cuestiones relacionadas