配列をjsonに変換した結果は配列ですか、それともオブジェクトですか? (旅行記)

藏色散人
リリース: 2023-04-09 17:46:01
転載
3571 人が閲覧しました

お勧め: 「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 サイトの他の関連記事を参照してください。

関連ラベル:
php
ソース:learnku.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!