Optimisation: or et and

Mammouth du PHP | 985 Messages

27 mars 2010, 13:37

Je pense avoir compris en partie le pourquoi:

En fait ce n'est pas un transtypage ou autre de $row en array(), car si on cast $row -> on a une belle erreur.

Donc, en fait il interprète $row["champ"] comme $row[0], c'est à dire non plus comme un tableau mais comme une partie de la variable.

Exemple:
<?php
error_reporting(-1);
$row = 'abc';
echo $row["champ"]; // retourne: a
var_dump($row["champ"]); // retourne: string(1) 'a'

echo $row[0]; // retourne: a
var_dump($row[0]); // retourne: string(1) 'a'
?>
Aucune erreur, que ce soit: true, false, null, Int, String.
(enfin je crois)
Car il ne l'interprète pas comme un tableau.

Et donc comme une partie de false -> qui est donc égale à null :)
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

ViPHP
ViPHP | 3300 Messages

27 mars 2010, 13:53

Je pense avoir compris en partie le pourquoi:

En fait ce n'est pas un transtypage ou autre de $row en array(), car si on cast $row -> on a une belle erreur.

Donc, en fait il interprète $row["champ"] comme $row[0], c'est à dire non plus comme tableau mais comme une partie de la variable.

(...)

Aucune erreur, que ce soit: true, false, null, un Int, String.
Car il ne l'interprète pas comme un tableau.

Et donc comme une partie de false -> est égale à null :)
Euh non. il doit probablement regarder en premier le type de la variable $row, si c'est un tableau on va plus loin, si c'est un texte aussi parceque c'est un tableau de char, et si c'est un objet aussi parceque il peut etre énumérable. les autres types étant inutilisables ca default sur null.

représente toi une variable php comme étant une sorte d'objet abstrait contenant entre autre le type de celle ci et sa valeur, l'information la plus rapide à accéder c'est le type (un int avec des constantes pour les rendre plus lisibles) donc pour un parser on va utiliser ça en priorité :)
Fait du php depuis que ca existe ou presque :)

Mammouth du PHP | 985 Messages

27 mars 2010, 14:02

Ok oui, tu as surement raison.
Donc pour autre chose qu'un type array, string ou objet, il devrait logiquement émettre une erreur, mais en fait non, et assigne de plus un null ensuite...
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

ViPHP
ViPHP | 3300 Messages

27 mars 2010, 14:12

Ok oui, tu as surement raison.
Donc pour autre chose qu'un type array, string ou objet, il devrait logiquement émettre une erreur, mais en fait non, et assigne de plus un null ensuite...
vi y'a un message d'erreur manquant ici à mon avis, sans doute par oubli plus qu'autre chose.
Fait du php depuis que ca existe ou presque :)

Mammouth du PHP | 985 Messages

27 mars 2010, 14:15

Bon ben t'es excusé alors pour le coup du array() :wink:
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.