お勧め: 「PHP ビデオ チュートリアル 」
最近、仕事中によくこのような問題に遭遇するので、記録しておきます~
こちらは見てください、json_encode後の結果は文字列ばかりですが、最近はインターフェースのデータが書き込まれることが多くなり、このような問題がよく起こるため、ここで述べた結果はフロントエンドに転送した後の結果です。は PHP でのみ表示されます。その場合、それらはすべて配列になる可能性があります...
質問: 配列を JSON に変換するとき、それらはオブジェクトである場合と配列である場合がありますか?
ケース 1:
$arr = [1,2,3];//数组下标从0开始的 echo json_encode($arr); //[1,2,3] $arr = [1=>1,2=>2,3=>3];//数组下标不是从0开始 echo json_encode($arr);//{"1":1,"2":2,"3":3}
現時点で配列を返す必要がある場合は、次のように処理できます
$arr = [1=>1,2=>2,3=>3]; echo json_encode(array_values($arr));//[1,2,3]
ケース 2:
$arr = []; $arr[0] = 'xxx'; $arr[1] = 'yyy'; echo json_encode($arr);//["xxx","yyy"] $arr = []; $arr[1] = 'yyy'; $arr[0] = 'xxx'; echo json_encode($arr);//{"1":"yyy","0":"xxx"}
代入の添字は同じですが、実行順序が変更され、結果も異なることがわかります
次のは友人が提案した解決策です
$arr = []; $arr[1] = 'yyy'; $arr[0] = 'xxx'; $arr = array_values($arr); echo json_encode($arr);//["yyy","xxx"]
結果に問題があることがわかります。yyy の元のインデックスは 1 で、結果は 0
必要な結果は次のとおりです["xxx", "yyy"]
これが解決策です
$arr = []; $arr[1] = 'yyy'; $arr[0] = 'xxx'; ksort($arr); echo json_encode($arr);//["xxx","yyy"]
ケース 3:
$arr = []; $arr[0] = 'yyy'; $arr[2] = 'xxx'; print_r($arr); echo json_encode($arr); /*Array ( [0] => yyy [2] => xxx ) {"0":"yyy","2":"xxx"} */
ケース 4 :
$arr = []; echo json_encode($arr);//[]
概要:
配列を json に変換するとき、インデックスが 0 から始まる 0、1、2、... でない場合、順序、返される JSON 構造はオブジェクトです。配列を返したい場合は、インデックスが 0 から始まることが厳密に要求され、順序の途中に切れ目の数字があってはなりません
以上が配列をjsonに変換した結果は配列ですか、それともオブジェクトですか? (旅行記)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。