0

json_encode以下に示すように、使用してエンコードしているphp配列があります。

PHP コード:

$arr=array(10=>"Apple",1=>"Ball",9=>"Cat",11=>"Dog",15=>"Elephant");
echo json_encode($arr);

json でエンコードされた出力は、元の配列と同じ順序を維持します。しかしjson_encode、javascript で出力にアクセスしようとすると、そのオブジェクトの要素は数値インデックスの昇順で並べ替えられます。

コンソール ログ:

[{1="Ball",9="Cat",10="Apple",11="Dog",15="Elephant"}]

元の配列と同じ順序を保持したい。これはどのように行うことができますか?

4

2 に答える 2

2

JavaScript オブジェクトのキーの順序に依存しないでください。詳細については、この投稿を参照してください。

JavaScript オブジェクトをキーで並べ替える

順序が重要な場合は、オブジェクトの配列を作成する必要があります。各オブジェクトは次のようになります。

{9: "Cat"}

私がリンクした投稿で説明したように、特定の順序で反復する必要がある場合の別のオプションは、構造を維持し、 を使用Object.keys()してキーを取得し、それらを並べ替えてから、並べ替えられたキーを反復することです。

于 2013-08-16T12:10:55.960 に答える
1

インデックスを引用してみてください(効果的に文字列にします):

$arr = array("10" => "Apple", "1" => "Ball", "9" => "Cat", "11" => "Dog", "15" => "Elephant");
echo json_encode($arr);

これにより、次のようなオブジェクトが得られます

{
    "10": "Apple",
    "1": "Ball",
    "9": "Cat",
    "11": "Dog",
    "15": "Elephant"
}

配列が必要な場合は、PHP 配列を少し異なる方法で作成する必要があります。

$arr = array(array(10 => "Apple"), array(1 => "Ball"), array(9 => "Cat"), array(11 => "Dog"), array(15 => "Elephant"));
echo json_encode($arr);

出力します

[
    {"10":"Apple"},
    {"1":"Ball"},
    {"9":"Cat"},
    {"11":"Dog"},
    {"15":"Elephant"}
]
于 2013-08-16T12:10:45.910 に答える