Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Probleme avec &

4 réponses
Avatar
Thief13
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 !

4 réponses

Avatar
P'tit Marcel
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/

Avatar
Denis Beauregard
Le 26 Jul 2007 14:47:47 GMT, Thief13 é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

Avatar
Olivier Miakinen

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;

Quelqu'un à une idée d'ou peut provenir le problème ?


Avatar
Olivier Miakinen

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