Bonjour !
A force de vouloir nous simplifier la vie, PHP finit aussi par agir différemment de ce qu'on peut attendre de lui. Mais peut être que je ne connais juste pas la parade...
Bien qu'il soit peu utile de le rappeler, une assignation en php renvoie la valeur booléene du membre de gauche.
Ce code affiche '1'.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $b = array('pomme', 'poire', 'tomate'); if($a = in_array('pomme', $b)) echo (int)$a;
C'est cool, même si ça sert a rien ici.
Problème ! La valeur de retour d'une assignation '=' est convertie implicitement en booléen. Pratique la plupart du temps.
Mais dans mon cas, ça casse :
Rien... Car array_search me renvois l'integer '0', qui une fois casté en booleen vaut False.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $b = array('pomme', 'poire', 'tomate'); if($a = array_search('pomme', $b)) echo (int)$a;
Est-ce que quelqu'un aurait une solution ? (sans rajouter de ligne hein, pas compliqué de passer outre ce soucis, c'est juste pour le fun)
La moins pire solution que j'ai trouvé pour l'instant c'est :
Ou alors pour ce cas plus spécifique, il existe peut être une autre fonction de tableau qui permet de combiner un array search et un in_array sans poser ce soucis ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $b = array('pomme', 'poire', 'tomate'); if($a = (string)array_search('pomme', $b)||$a==='0') echo (int)$a;
Je sais, pas très productif comme recherche de code, mais pour le coup, j'aurais bien aimé avoir un opération d'assignation qui me renvoit un booléen avec vérification du type. '====' un jour ?![]()
Partager