-1

これが私のコードです:

   echo '<br/>';
   echo 'Json data from DB   '.json_encode($output);
   $data=array();
   $array=json_decode($output,true);
   echo '<br/>';
   echo 'Concerted into an array   '.json_encode($array);

出力は次のとおりです。

Json data from DB  [{"0":"1","key-1":"1","1":"1","key-2":"1","2":"1","key-3":"1","3":"1","key-4":"1"}] 
Concerted into an array null 

json_devode が null を返すのはなぜですか? 私がこのように同じことをしようとすると:

$data = '[{"0":"1","key-1":"1","1":"1","key-2":"1","2":"1","key-3":"1","3":"1","key-4":"1"}]';

// convert to an array
$data = json_decode($data, true);

次に、通常どおりに出力されます。

Json data from DB  [{"0":"1","key-1":"1","1":"1","key-2":"1","2":"1","key-3":"1","3":"1","key-4":"1"}] 
Concerted into an array  {"0":"1","key-1":"1","1":"1","key-2":"1","2":"1","key-3":"1","4":"1","key-4":"1"}
4

2 に答える 2

4

json_decodeは文字列を取り、文字列で$outputはないためです ( で証明されているようにjson_encode、それは配列です)。

于 2012-12-15T12:07:30.327 に答える
1

あなたは物事を混同しているようです。あなたの例$outputでは、すでに配列のように見えますが、もう一度デコードしたいですか? どのように?

これを行う場合:

json_encode($output);

適切な JSON オブジェクトを返します。これは、$output既に配列であることを意味します。json_decodeまた、JSON 以外のオブジェクトを使用することはできません。直接使用できる$outputか、問題をより明確に述べる必要があるようです。

于 2012-12-15T12:10:40.473 に答える