Une Bévue :
> j'ai une ligne php qui assigne à une variable le contenu d'une comparaison,
> j'ai fait ça comme ça :
>
> $is_mac = ($mac_address == $imac_mac_address) true : false;
Il manque un '?', sans doute une typo. J'écris plutôt TRUE et FALSE
pour les constantes booléennes, mais ça ne doit pas changer quoi que de
soit.
> quand je fais :
>
> echo "\$is_imac = $is_imac<br />";
Là, il y a une conversion d'un booléen en chaîne, cette conversion
donne:
TRUE -> '1'
FALSE -> ''
C'est comme ça, je n'en sais pas plus.
> j'obtiens :
>
> $is_imac =
>
> quand le résultat est faux
>
> et :
>
> $is_imac = 1
>
> quand le résultat est vrai
>
> normal ?
Oui.
> puis-je faire plus court, du genre :
>
>
> $is_mac = ($mac_address == $imac_mac_address);
>
> càd sans "? true : false" ???
Bien entendu, s'il s'agit d'affecter à $is_mac une valeur booléenne.
Ajouter le ? true : false; est même une redondance à la limite de la
faute.
En revanche, pour en faire qualque chose de plus facile à lire (et qui
accessoirement continuera dans beaucoup de cas à pouvoir être utilisé
comme un booléen, dans un test par exemple:
$is_mac = ($mac_address == $imac_mac_address)?1:0;
$is_mac = ($mac_address == $imac_mac_address)?'1':'0';
$is_mac = ($mac_address == $imac_mac_address)?'ben vrai, alors...':'ben
non...';
Vous pouvez garder votre variable sous forme booléenne, et juste pour
l'afficher utiliser l'opérateur ternaire:
print($is_mac?'1':'0');
print($is_mac?1:0);
ou alors utiliser (int)$is_mac, attention, (string)FALSE donne '', il
faudrait faire (string)(int)FALSE pour obtenir '0', il doit y avoir
plus simple.
Notez que le forçage (bool)expression peut s'écrire !!expression, il
n'y a pas de petite économie.
--
Pierre Maurette