Voilà, j'ai un problème étrange : je chercher à faire quelque chose comme ça
$i = true;
$j = false;
$i &= $j;
le probleme, c'est que le résultat, qui devrait etre un booleen, devien
un integer, alor que quand je fait ça :
$i = $i && $j;
le resultat reste bien en booleen...
Quelqu'un à une idée d'ou peut provenir le problème ?
Merci d'avance !
L'assignation combinée n'est pas disponible pour tous les opérateurs, et
notamment n'existe pas pour les opérateurs logiques && et ||.
D'ailleurs, si elle existait, il faudrait coder &&= et non &=.
Le code &= correspond à l'opérateur & (ET binaire qui renvoit un nombre
binaire et non un booléen).
a+
--
P'tit Marcel
stats sur les forums modérés http://www.centrale-lyon.org/ng/
>Bonjour à tous !
>
>Voilà, j'ai un problème étrange : je chercher à faire quelque chose comme ça
>
>$i = true;
>$j = false;
>
>$i &= $j;
Plutôt &&=
>le probleme, c'est que le résultat, qui devrait etre un booleen, devien
>un integer, alor que quand je fait ça :
>
>$i = $i && $j;
>
>le resultat reste bien en booleen...
>
>Quelqu'un à une idée d'ou peut provenir le problème ?
mauvaise syntaxe
Denis
Ok.
> le probleme, c'est que le résultat, qui devrait etre un booleen, devien
> un integer,
Ben non, c'est normal. Contrairement à l'opérateur && (et &&= s'il
existe) qui donne un booléen, l'opérateur & (et &=) donne un entier.
> alor que quand je fait ça :
>
> $i = $i && $j;
>
> le resultat reste bien en booleen...
Oui, bien sûr.
Si jamais ça existe :
$i &&= $j;
Comme l'a signalé P'tit Marcel, cet opérateur n'existe pas.
Il y a d'autres façons de faire, par exemple :
- $i = $i ? $j : false;
- if ($i) $i = $j;
- $i &= $j; settype($i, "boolean");
- $i &= $j; $i = (bool) $i;
Mais la meilleure est sans conteste :
- $i = $i && $j;
----------- Olivier Miakinen a écrit
http://groups.google.com/group/fr.comp.lang.php/browse_thread/thread/a1344b6234dae7b3/c4ea6f6046025eff?lnk=gst&q=%24i+%3D+%24i+%26%26+%24j%3B&rnum=2&hl=fr#c4ea6f6046025eff
-------------------
Il y a d'autres façons de faire, par exemple :
- $i = $i ? $j : false;
- if ($i) $i = $j;
- $i &= $j; settype($i, "boolean");
- $i &= $j; $i = (bool) $i;
Mais la meilleure est sans conteste :
- $i = $i && $j;
---------------
$i =1;
$j =2
- $i &= $j; settype($i, "boolean");
0001
0010
-----
0000
C'est ti ça?
Amicalement
Jean Pierre Daviau
--
windows Xp
asus p4 s533/333/133
Intel(R) Celeron (R) CPU 2.00 GHz
Processor Radeon7000 0x5159 agp