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!