2011-01-30 16 views
10

私は名前がエンコードされていないのはなぜ私はこのPHP配列から `json_encode()`キーをどうやったらいいですか?

[1691864,7944458,9274078,1062072,8625335,8255371,5476104,6145446,7525604,5947143] 

ような何かを得るjson_encode($thearray)場合は、この

Array ([0] => 1691864 [1] => 7944458 [2] => 9274078 [3] => 1062072 [4] => 8625335 [5] => 8255371 [6] => 5476104 [7] => 6145446 [8] => 7525604 [9] => 5947143) 

のように印刷し、配列を持っている(例えば0、1、2、3など)? jsonコードに表示させるにはどうすればよいですか?それらは、アレイのインデックスだけであるので 完全なコードは

$ie = 0; 
    while($ie 10) 
    { 
    $genid = rand(1000000,9999999); 
    $temp[$ie] = $genid ; 
    $ie++; 
    } 
    print_r($temp); 

    $temp_json = json_encode($temp); 
    print_r($temp_json); 

答えて

31

あなたはそのjson_encodeを強制することができますが、あなたがJSON_FORCE_OBJECTオプションを設定することにより、数字キーの配列を渡しているが、オブジェクトを使用しています。

{"0":1691864,"1":7944458,"2":9274078,"3":1062072,"4":8625335,"5":8255371,"6":5476104,"7":6145446,"8":7525604,"9":5947143} 

しかし、オブジェクトが本当に必要な場合にのみこれを行うべきです。

+1

このパラメータを使用している「JSON_FORCE_OBJECT」についてはわかりませんでしたか?投票された〜Ty –

0

未満です。各要素にある種の名前を追加する場合は、連想配列を使用する必要があります。

あなたはそれが戻っ0、1、2、3など

0

これまで出てきますけれどもJSON配列は、動作を定義されていることをデコードします。あなたが表示する配列は、非連想で、通常インデックスされた配列です。そのインデックスは暗黙的に数値です。

あなたはPHPやJavaScriptで配列を解読した場合は、インデックスを使用して要素にアクセスすることができるようになります:

$temp_array = json_decode($temp_json); 

echo $temp_array[2]; // 9274078 
5

代わりにこれを使用します。

json_encode((object)$temp) 

これは、オブジェクトに配列を変換し、これは、JSONエンコード時にキーを表示します。

番号から別の番号へのマッピングではなく、データのシーケンスを格納する場合は、実際には配列を使用する必要があります。その後、返された値が数字キーでJSONオブジェクトになります

json_encode($thearray, JSON_FORCE_OBJECT) 

関連する問題