Maison >développement back-end >tutoriel php >Pourquoi « json_encode » renvoie-t-il parfois des nombres sous forme de chaînes et comment puis-je empêcher cela ?

Pourquoi « json_encode » renvoie-t-il parfois des nombres sous forme de chaînes et comment puis-je empêcher cela ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-03 06:13:16745parcourir

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

Json_encode Strings vs. Numbers

Lors de l'utilisation de la fonction PHP json_encode, vous pouvez rencontrer un problème où les nombres sont codés sous forme de chaînes. Cela peut entraîner un comportement inattendu lorsque vous travaillez avec JavaScript, car les chaînes ne peuvent pas être utilisées pour des opérations numériques.

Comprendre le problème

Par exemple, si vous avez un tableau comme this :

array('id' => 3)

json_encode affichera la chaîne JSON suivante :

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

Remarquez que la propriété id est entourée de guillemets, indiquant une valeur de chaîne. Lorsque JavaScript rencontre cette chaîne, il l'interprète comme telle et tous les calculs numériques effectués dessus échoueront.

Prévenir le codage des chaînes

Pour résoudre ce problème, vous pouvez utiliser l'indicateur JSON_NUMERIC_CHECK lors de l'appel de json_encode. Cet indicateur demande à PHP de convertir automatiquement les nombres en valeurs numériques avant l'encodage.

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

Cela affichera :

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

Avec l'indicateur JSON_NUMERIC_CHECK, la propriété row_id est désormais un véritable nombre, vous permettant d'effectuer des opérations numériques dessus en JavaScript sans aucun problème.

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