2011-09-15 18 views
8

quale causa di errore nel mio codice?json_decode() si aspetta che il parametro 1 sia stringa, matrice data

$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 

errore:

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

UPDATE:

se l'uso di json_encode, non json_decode la mia uscita è questo:

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

sono parola persiana.

+0

si sta passando un array in cui è prevista una stringa. Stai creando l'array nella riga prima - è necessario? Perché non usare direttamente '$ row-> guide' direttamente? –

+1

Cosa stai cercando di realizzare? –

+0

Cosa stai cercando di fare qui? –

risposta

32

Penso che si desidera json_encode, non json_decode.

+0

se l'uso di 'json_encode' il mio output è questo:' [{"guida": ["\ u0633 \ u06cc \ u0662 \ u0633 \ u0639 \ u0634 \ u0662 \ u0627 \ u0662 \ u0627 \ u0632 \ u0632 \ u0627 \ u062f \ u0647 "]}, {" guida ": [" \ u0633 \ u06cc \ u062f \ u0633 \ u0639 \ u06cc \ u062f \ u062f \ u0627 \ u062f \ u0627 \ u0634 \ u0632 \ u0627 \ u062f \ u0647" ]}, {"guida": null}] ', sono parola persiana –

+0

@Selena: i caratteri' \ u0633' sono solo caratteri Unicode codificati. La prima 'guida' è' سید سعید داداشزاده'. È giusto? –

+0

sì, cosa devo fare per mostrarlo? –

1

json_decode() viene utilizzato per decodificare una stringa json ad un oggetto array/dati. json_encode() crea una stringa json da una matrice o dati. Stai usando la funzione sbagliata amico mio, prova json_encode();

1

ecco la soluzione per il problema simile che stavo affrontando, mentre l'estrazione nome dal profilo utente oggetto JSON facebook

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

Grazie mille! Aiutato con il mio problema! –

+0

Uhm ... Mi manca qualcosa? Questo è un no-op completo ... –

7

vostro decodifica non è impostata su true. Se non hai accesso per impostare la sorgente su true. Il codice qui sotto lo risolverà per te.

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

Kareem !!!! grazie

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

... `

0.123.

funziona per me

+0

Questa non sembra essere una risposta alla domanda del poster originale. Se vuoi commentare un'altra risposta, fare un commento su quella risposta sarebbe più appropriato. –

+0

Non ho reputazione :( –

Problemi correlati