Discussion:
Probleme avec &
(trop ancien pour répondre)
Thief13
2007-07-26 14:47:47 UTC
Permalink
Bonjour à tous !

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 !
P'tit Marcel
2007-07-26 16:36:17 UTC
Permalink
Post by Thief13
Voilà, j'ai un problème étrange : je chercher à faire quelque chose comme ça
$i = true;
$j = false;
$i &= $j;
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/
Denis Beauregard
2007-07-26 16:36:17 UTC
Permalink
Post by Thief13
Bonjour à tous !
Voilà, j'ai un problème étrange : je chercher à faire quelque chose comme ça
$i = true;
$j = false;
$i &= $j;
Plutôt &&=
Post by Thief13
le probleme, c'est que le résultat, qui devrait etre un booleen, devien
$i = $i && $j;
le resultat reste bien en booleen...
Quelqu'un à une idée d'ou peut provenir le problème ?
mauvaise syntaxe


Denis
Olivier Miakinen
2007-07-26 16:43:53 UTC
Permalink
Post by Thief13
Voilà, j'ai un problème étrange : je chercher à faire quelque chose comme ça
$i = true;
$j = false;
$i &= $j;
Ok.
Post by Thief13
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.
Post by Thief13
$i = $i && $j;
le resultat reste bien en booleen...
Oui, bien sûr.

Si jamais ça existe :
$i &&= $j;
Post by Thief13
Quelqu'un à une idée d'ou peut provenir le problème ?
Olivier Miakinen
2007-07-26 16:58:46 UTC
Permalink
Post by Olivier Miakinen
Post by Thief13
$i = $i && $j;
$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;
Jean Pierre Daviau
2007-08-03 20:14:56 UTC
Permalink
Bonjour � tous,

----------- 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

Continuer la lecture sur narkive:
Loading...