Utiliser |. ou ||

Bonjour, en testant des expressions utilisées dans un scénario, je constate que la simple barre verticale | dans l’expression donne un résultat numérique 0 ou 1 et la double barre || donne true ou false comme résultat. Y a-t-il une préconisation sur l’utilisation de | et ||. ou est ce sans importance ?
Merci

On preconise && pour ET || pour OU

Bonjour.

C’est comme : = # == # ===, elles sont toutes différentes

Bonsoir, oui = # == bien sur l’un assigne l’autre compare (enfin j’abrège) mais === ?? vu nulle part

Hello,

« | » est prioritaire sur « || » dans une expression PHP. Mais « | » travail sur les bits, c’est donc un peu particulier et je ne pense pas que tu auras un jour une raison de l’utiliser à la place de « || ».

image

image

Pour plus d’explication : PHP: Opérateurs sur les bits - Manual

2 « J'aime »

C est visiblement pas si evident que ca pour tout le monde :wink:

Verifie en plus égalité du type (string ↔ string, binaire ↔ binaire, …)

true == 1 ==> vrai
true === 1 ==> faux
2 « J'aime »

Bonsoir Oui j’avais lu le futur remplacement de ET/et/and par && et OU/ou/OR par | (soucis de coller à la norme) mais le double || me retourne un résultat différent du simple | bien que les deux résultats soient identiquement comparable l’un se présente sous forme numérique l’autre sous forme string. Je m’interrogeais sur les futures versions: Jeedom fera-t-il une différence entre | et || si oui, un sacré paquet de scénarios à revoir.

C pas jeedom qui fera la difference. Y a deja une difference !
Les posts ci dessus l’explique bien

Ok j’étais passé à côté n’ayant jamais eu à l’utiliser . M’étant limité au manuel Jeedom scénario le === n’est pas mentionné mais je n’avis pas pensé au manuel PHP , pan sur les doigts, merci @Bison opérations sur les bits là je comprends mieux la différence.

Je ne savais pas que le | était supporté et je ne suis pas certain de ce qu’il veut dire car il y a toujours risque de différence entre du pure php et ce qu’on met dans jeedom mais :warning: ce n’est pas du tout un OU.

Très dangereux de faire de telle conclusion basée sur un unique test:

Non le simple pipe n’est pas un or donnant le résultat en numérique, c’est un operateur travaillant sur les bits (et pas sur l’entier) (bitwise operators)

Exemple
3 | 1 = 3,
5 | 2 = 7

Edit: j’avais commencé à écrire ma réponse en draft il y a quelques heures avant d’être interrompu, je vois seulement maintenant que @Bison a répondu entre temps :upside_down_face:

jusqu’à présent pour tous mes scénarios (un sacré paquet) qui requièrent un OU j’utilisait un simple pipe et ils fonctionnaient correctement (mais pas de PHP), je vais peu à peu les modifier avec un double pipe pour etre dans les clous avec la doc scénario Jeedom, sacré boulot,
En tout cas merci à tous

en quoi alors ?

enfin pas de php je voulais dire pas de bloc code juste des scénario rédigé avec les blocs jeedom autre que code

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