Heim >Backend-Entwicklung >PHP-Tutorial >Warum gibt „json_encode' manchmal Zahlen als Strings zurück und wie kann ich das verhindern?

Warum gibt „json_encode' manchmal Zahlen als Strings zurück und wie kann ich das verhindern?

Linda Hamilton
Linda HamiltonOriginal
2024-12-03 06:13:16745Durchsuche

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

json_encode Strings vs. Numbers

Bei Verwendung der PHP-Funktion json_encode kann es zu einem Problem kommen, bei dem Zahlen als Strings codiert werden. Dies kann bei der Arbeit mit JavaScript zu unerwartetem Verhalten führen, da Zeichenfolgen nicht für numerische Operationen verwendet werden können.

Das Problem verstehen

Zum Beispiel, wenn Sie ein Array wie Dies:

array('id' => 3)

json_encode gibt die folgende JSON-Zeichenfolge aus:

"{ ["id": "3", ...)

Beachten Sie das Die Eigenschaft „id“ ist in Anführungszeichen gesetzt und gibt einen Zeichenfolgenwert an. Wenn JavaScript auf diese Zeichenfolge stößt, interpretiert es sie als solche und alle daran durchgeführten numerischen Berechnungen schlagen fehl.

Verhindern der Zeichenfolgencodierung

Um dieses Problem zu beheben, können Sie Folgendes verwenden: das JSON_NUMERIC_CHECK-Flag beim Aufruf von json_encode. Dieses Flag weist PHP an, Zahlen vor dem Codieren automatisch in numerische Werte umzuwandeln.

$arr = array( 'row_id' => 1, 'name' => 'George' );
echo json_encode( $arr, JSON_NUMERIC_CHECK );

Dies wird Folgendes ausgeben:

{"row_id":1,"name":"George"}

Mit dem JSON_NUMERIC_CHECK-Flag ist die row_id-Eigenschaft jetzt eine echte Zahl. So können Sie problemlos numerische Operationen in JavaScript ausführen.

Das obige ist der detaillierte Inhalt vonWarum gibt „json_encode' manchmal Zahlen als Strings zurück und wie kann ich das verhindern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn