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 ?
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!