Magie du serialize()

Il y a quelques temps, quelqu’un avait sorti un site spécial : PHP c’est de la merde. Je ne sais pas s’il faut aller jusqu’à dire ça (après tout, grâce à PHP, j’apporte le pain sur la table pour ma famille), mais voilà qu’on peut re-découvrir les joies de ce langage et de son transtypage magique.

array
  'mon_entier' => float 2
  'seuil' => float 0.3

string 'a:2:{s:17:"mon_entier";d:2;s:5:"seuil";d:0.299999999999999988897769753748434595763683319091796875;}' (length=106)
array
  'mon_entier' => float 2
  'seuil' => float 0.3

Le code :

$s_parametrage = serialize($parametrage);
 var_dump($parametrage);
 var_dump($s_parametrage);

 var_dump(unserialize($s_parametrage));

Et parfois on rigole bien, avant de penser à vérifier que ce n’est pas notre implémentation qui pose problème, mais vraiment PHP.

3 réflexions sur “Magie du serialize()

  1. Je me suis fait avoir par un 0 ==  » pas plus tard que ce weekend, et j’ai mis une heure à trouver le problème, car oui, en PHP, une chaine vide est équivalente à 0…

  2. Il n’y a pas de soucis en fait. C’est la façon de représenter les nombres flottants qui est toujours particulière. Le mieux aurait été de le coder en représentation binaire ou alors sous forme de chaînes de caractères. Ils ont essayé un truc étrange:-/.
    Pour t’amuser complètement : php -r « var_dump(serialize(.3), serialize(.29), serialize(.299)); »
    Les nombres flottants ont toujours été un soucis🙂.

    Mais si le unserialize s’en sort, où est le soucis ?

  3. @mageekguy je suis devenu accro au === pour les tests, ça évite bien des soucis ^^

    Sinon, le principal reste de trouver la même chose après un serialize/unserialize non ? :p

    (exemple rigolol tout de même, je le ressortirais pour briller en soirée)

Ajouter mes idées

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s