PHP : taille d'une variable
chabliya
-
Giorgiolino Messages postés 270 Statut Contributeur -
Giorgiolino Messages postés 270 Statut Contributeur -
Bonjour à tous,
je parse du json à partir de l'url http://search.twitter.com/search.json?q=%23test avec la fonction json_decode
je tente de récupérer la variable "id":148043024163815424.
La varible est tronquée au bout de 14 caractères je crois et j'ai besoin des 18 caractères.
Si je m'exprime mal voici le code :
je parse du json à partir de l'url http://search.twitter.com/search.json?q=%23test avec la fonction json_decode
je tente de récupérer la variable "id":148043024163815424.
La varible est tronquée au bout de 14 caractères je crois et j'ai besoin des 18 caractères.
Si je m'exprime mal voici le code :
<?php
// Ouverture du fichier json
$codeJson = file_get_contents('http://search.twitter.com/search.json?q=%23test');
// parsing du json
$obj = json_decode($codeJson);
$i = 0 ;
while(isset($obj->results[$i]->text)) {
// affichage de la variable id
echo "<br/>";
echo $obj->results[$i]->id; // je n'obtiens pas les 18 caractères de mon nombre
$i++;
}
?>
A voir également:
- PHP : taille d'une variable
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Retour a la ligne php - Forum Webmastering
- Alert php - Forum PHP
- Retour a la ligne php ✓ - Forum PHP
1 réponse
Bonjour,
tes id en question ne sont pas "tronqués", il sont juste représentés comme des nombres flottants par php.
Pour rappel, en php (et chez d'autres aussi) les entiers sont des nombres dont la valeur absolue est inférieure à PHP_INT_MAX = 2^32 = 2147483647
Tes id étant des valeurs au-delà de cette limite, PHP les convertit automatiquement en nombre flottant dont l'affichage est de la forme
{LNUM}.{RNUM]E+/-{EXPONENT_DNUM}
Tu peux te persuader qu'il ne s'agit que d'affichage en remplaçant dans ton script
ceci
par ceci
Et tu comprendras alors de quoi je parles.
Un peu de lecture :
--> https://www.php.net/manual/fr/language.types.float.php
tes id en question ne sont pas "tronqués", il sont juste représentés comme des nombres flottants par php.
Pour rappel, en php (et chez d'autres aussi) les entiers sont des nombres dont la valeur absolue est inférieure à PHP_INT_MAX = 2^32 = 2147483647
Tes id étant des valeurs au-delà de cette limite, PHP les convertit automatiquement en nombre flottant dont l'affichage est de la forme
{LNUM}.{RNUM]E+/-{EXPONENT_DNUM}
Tu peux te persuader qu'il ne s'agit que d'affichage en remplaçant dans ton script
ceci
echo $obj->results[$i]->id;
par ceci
printf("%f",$obj->results[$i]->id);
Et tu comprendras alors de quoi je parles.
Un peu de lecture :
--> https://www.php.net/manual/fr/language.types.float.php