Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Probleme avec &

0 views
Skip to first unread message

Thief13

unread,
Jul 26, 2007, 10:47:47 AM7/26/07
to
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

unread,
Jul 26, 2007, 12:36:17 PM7/26/07
to
Thief13 a écrit :

> 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

unread,
Jul 26, 2007, 12:36:17 PM7/26/07
to
Le 26 Jul 2007 14:47:47 GMT, Thief13 <Thi...@nospam.com> écrivait
dans fr.comp.lang.php:

>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

Olivier Miakinen

unread,
Jul 26, 2007, 12:43:53 PM7/26/07
to
Le 26/07/2007 16:47, Thief13 a écrit :
>
> Voilà, j'ai un problème étrange : je chercher à faire quelque chose comme ça
>
> $i = true;
> $j = false;
>
> $i &= $j;

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;

Olivier Miakinen

unread,
Jul 26, 2007, 12:58:46 PM7/26/07
to
Le 26/07/2007 18:43, Olivier Miakinen a écrit :
>>
>> $i = $i && $j;
>
> 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;

Jean Pierre Daviau

unread,
Aug 3, 2007, 4:14:56 PM8/3/07
to
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

Message has been deleted
0 new messages