Je vais évaluer : strval(0) == "test" Résultat: true ! Pourquoi c'est pas False

Bonjour,

ma question me semble tellement bête … je dois rater une évidence !
J’ai isolé ce problème dans un de mes scénarios qui plante et également dans le testeur d’expression
image

Du coup basiquement j’ai testé ça => OK
image

Puis j’ai testé ça (avec et sans strval) => NOK
image

Je comprends pas pourquoi strval(0) == « test » retourne True et pas False

Salut,

Il y a une raison pour utiliser strval() ?

Parce que de ce que je vois dans la doc php il y a un impératif à l’usage de cette fonction qui ne semble pas rempli :

strval ( mixed $value ) : string

value

La variable à convertir en chaîne de caractères.

value peut être un scalaire ou un objet implémentant la méthode magique __toString().

Vous ne pouvez pas utiliser la fonction strval() avec des tableaux ou des objets qui n’implémentent pas la méthode magique __toString().

Non aucun impératif d’utiliser strval. C’est pour tenter de contourner le probleme:

0 == "test" Resultat: True

ça devrait être mieux en forçant la correspondance en valeur et en type avec un triple égal (===) :

0 === "test"

Oui c’est ce que je viens de trouver (===)pour une comparaison ou (!===) pour une différence:
https://www.php.net/manual/fr/types.comparisons.php
@Salvialf Merci pour le coup de main

ou (!==)
1 « J'aime »

A ben justement ça avec !==, ça marche pas

image

alors que avec !===, le résultat est OK
image

Je pense qu’il ne faut pas trop se fier au testeur d’expression.

Capture d’écran du 2021-06-10 15-15-27

Fait ce test dans un bloc code.

if (0 !=== "test") {
  $scenario->setLog('OK');
} else {
  $scenario->setLog('KO');
}
[2021-06-10 15:22:00][SCENARIO]  - ERREUR PHP: syntax error, unexpected '=' à la ligne 1 !

Je suis d’accord avec toi d’après la spec PHP, la bonne synthaxe est !==

pourtant, en bloc code, (j’ai testé avec 0 puis avec ‹ test ›), et il me faut bien 3 =:

------------------------------------
[2021-06-10 16:53:56][SCENARIO] Start : Scenario lance manuellement.
[2021-06-10 16:53:56][SCENARIO] Exécution du sous-élément de type [condition] : if
[2021-06-10 16:53:57][SCENARIO] Evaluation de la condition : [0 !== "test"] = Faux
[2021-06-10 16:53:57][SCENARIO] Exécution du sous-élément de type [action] : else
[2021-06-10 16:53:57][SCENARIO] Log : KO
[2021-06-10 16:53:57][SCENARIO] Exécution du sous-élément de type [condition] : if
[2021-06-10 16:53:57][SCENARIO] Evaluation de la condition : [0 !=== "test"] = Vrai
[2021-06-10 16:53:57][SCENARIO] Exécution du sous-élément de type [action] : then
[2021-06-10 16:53:57][SCENARIO] Log : OK
[2021-06-10 16:53:57][SCENARIO] Exécution du sous-élément de type [condition] : if
[2021-06-10 16:53:57][SCENARIO] Evaluation de la condition : [0 !==== "test"] = Vrai
[2021-06-10 16:53:57][SCENARIO] Exécution du sous-élément de type [action] : then
[2021-06-10 16:53:57][SCENARIO] Log : OK
[2021-06-10 16:53:57][SCENARIO] Fin correcte du scénario
------------------------------------
[2021-06-10 16:55:14][SCENARIO] Start : Scenario lance manuellement.
[2021-06-10 16:55:14][SCENARIO] Exécution du sous-élément de type [condition] : if
[2021-06-10 16:55:14][SCENARIO] Evaluation de la condition : ["test" !== "test"] = Faux
[2021-06-10 16:55:14][SCENARIO] Exécution du sous-élément de type [action] : else
[2021-06-10 16:55:14][SCENARIO] Log : KO
[2021-06-10 16:55:14][SCENARIO] Exécution du sous-élément de type [condition] : if
[2021-06-10 16:55:14][SCENARIO] Evaluation de la condition : ["test" !=== "test"] = Faux
[2021-06-10 16:55:14][SCENARIO] Exécution du sous-élément de type [action] : else
[2021-06-10 16:55:14][SCENARIO] Log : KO
[2021-06-10 16:55:14][SCENARIO] Exécution du sous-élément de type [condition] : if
[2021-06-10 16:55:14][SCENARIO] Evaluation de la condition : ["test" !==== "test"] = Faux
[2021-06-10 16:55:14][SCENARIO] Exécution du sous-élément de type [action] : else
[2021-06-10 16:55:14][SCENARIO] Log : KO
[2021-06-10 16:55:14][SCENARIO] Fin correcte du scénario

Tu es en bloc action, pas en bloc code.

Oui tu as raison bloc action. Mais ça change pas le fond que le fonctionnement est différent entre spec php bloc action.

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.