Maison >développement back-end >tutoriel php >Pourquoi « json_encode » de PHP convertit-il les nombres en chaînes et comment puis-je y remédier ?

Pourquoi « json_encode » de PHP convertit-il les nombres en chaînes et comment puis-je y remédier ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-30 19:12:15494parcourir

Why Does PHP's `json_encode` Convert Numbers to Strings, and How Can I Fix It?

Problème d'encodage JSON : PHP json_encode conversion de nombres en chaînes

La fonction json_encode en PHP est rencontrée avec un problème où les valeurs numériques sont codées comme chaînes pendant le processus d’encodage JSON. Il en résulte que JavaScript, lorsqu'il rencontre ces chaînes codées, les interprète comme telles, conduisant à des erreurs dans les opérations numériques. Par exemple :

array('id' => 3)

Encode en :

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

Lorsque JavaScript accède à cette propriété "id", elle est interprétée comme une chaîne, provoquant des échecs dans les calculs numériques.

Solution : Empêcher le codage de chaînes

Pour empêcher json_encode de convertir les nombres aux chaînes, une solution existe dans les versions PHP 5.3.3 et supérieures :

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

En spécifiant l'indicateur JSON_NUMERIC_CHECK, les nombres seront automatiquement convertis en types numériques lors du processus d'encodage JSON :

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

Cela garantit que JavaScript peut identifier et manipuler correctement les valeurs sous forme de nombres.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn