ホームページ > バックエンド開発 > PHPチュートリアル > 「json_encode」が時々数値を文字列として返すのはなぜですか?これを防ぐにはどうすればよいですか?

「json_encode」が時々数値を文字列として返すのはなぜですか?これを防ぐにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-03 06:13:16
オリジナル
743 人が閲覧しました

Why Does `json_encode` Sometimes Return Numbers as Strings, and How Can I Prevent This?

json_encode 文字列と数値

PHP の json_encode 関数を使用すると、数値が文字列としてエンコードされるという問題が発生する場合があります。文字列は数値演算に使用できないため、JavaScript を使用するときに予期しない動作が発生する可能性があります。

問題の理解

たとえば、次のような配列があるとします。 this:

array('id' => 3)
ログイン後にコピー

json_encode は次の JSON を出力しますstring:

"{ ["id": "3", ...)
ログイン後にコピー

id プロパティが引用符で囲まれており、文字列値を示していることに注意してください。 JavaScript がこの文字列に遭遇すると、それをそのように解釈し、それに対して実行される数値計算は失敗します。

文字列エンコーディングの防止

この問題に対処するには、次のようにします。 json_encode を呼び出すときの JSON_NUMERIC_CHECK フラグ。このフラグは、エンコード前に数値を数値に自動的に変換するように PHP に指示します。

$arr = array( 'row_id' => 1, 'name' => 'George' );
echo json_encode( $arr, JSON_NUMERIC_CHECK );
ログイン後にコピー

これは次のように出力します。

{"row_id":1,"name":"George"}
ログイン後にコピー

JSON_NUMERIC_CHECK フラグを使用すると、row_id プロパティは本物の数値になります。これにより、JavaScript で問題なく数値演算を実行できるようになります。

以上が「json_encode」が時々数値を文字列として返すのはなぜですか?これを防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート