Question à la cantonnade: expressions booléennes

Mammouth du PHP | 2278 Messages

12 oct. 2012, 21:44

Existe-t-il un générateur/testeur d'expressions booléennes ? J'avais pondu ça en Dbase il y a des temps lointains...
Pourquoi la question? parce que, vu le nombre de problèmes résultant d'expressions booléennes mal conçues (et je ne parle pas des problèmes liés à ANd et OT / && et ||), ça semble être un sujet mal maitrisé.
du,genre

Code : Tout sélectionner

if (a and b) { } else { on ne sait pas exactement pourquoi on est là: il y a 4 possibilités et non pas 2 }
quand il aurait fallu

Code : Tout sélectionner

if (a) { if (b) { a juste ET b juste } else { a juste ET b faux } } else { if (b) { a faux ET b juste } else { a faux ET b faux } }
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

15 oct. 2012, 12:48

salut,


Perso je n'en connais pas. par contre je ne vois pas trop le but. c'est de retourner la valeur qui vaut false ?

Risque d'y avoir un problème avec le type de donnée.

si a vaut "zéro" ou null ton if(a) sera toujours faut alors que zéro est peut être une valeur cohérente.

Pour éviter cela utilise le triple = pour la comparaison de type.

a priori la différence entre && et and c'est la priorité de l'opérateur (&& avant and) => http://www.php.net/manual/fr/language.o ... ogical.php

tu va dire que je pointille mais

Code : Tout sélectionner

if (a and b) { } else { on ne sait pas exactement pourquoi on est là: il y a 4 possibilités et non pas 2 }
j'aurais dit 3 possibilité de se retrouver dans le else (si je souvient des tables de vérité ;)). J'me trompe ou ? ( 0,0 | 0,1 | 1,0, le cas ok étant 1,1).


@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 2278 Messages

15 oct. 2012, 13:02

Ma question n'est pas là.
L'observation du forum montre que nombre de questions viennent d'expressions booléennes mal conçues et non pas parce qu'on y a employé and au lieu du sacro-saint &&: il suffit de parenthéser correctement)
D'où l'intérêt d'un logiciel de création/test d'expressions booléennes comme il en existe pour les expressions régulières.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

16 oct. 2012, 09:21

ah ok, j'avais mal compris.

donc non pas à ma connaissance.

perso, et je suppose que sais faire aussi bien, ça finis souvient crayon papier et algèbre de bool ^^ (habitude "d’électronicien" surement) ;)


@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 5 Messages

16 oct. 2012, 09:54

A mon humble avis, le meilleur moyen reste de tester ton code à l'aide d'un petit script testant toutes les conditions :
foreach(array(true, false) as $a) {
    foreach(array(true, false) as $b) {

        // Code à tester
        if($a && $b) {
            echo "a ET b";

        } else {
            echo "else";
            
        }
        
    }
}

ViPHP
xTG
ViPHP | 7331 Messages

16 oct. 2012, 11:30

Le souci est que pour les expressions régulières on ne fait pas intervenir de variable dans l'équation. ;)
Dans notre cas il faudrait donner des valeurs pour tester, or vous pensez pas qu'une fois sur cinq ils vont rentrer des valeurs qui vont aller dans leur sens mais pas dans le bon ? (cf message de moogli avec les 0 != NULL et utilisation de === )