8796 sujets

Développement web côté serveur, CMS

Bonsoir à tous !

Admettons qu'en arithmétique ça se passe comme ça:

Pour la multiplication:
0 opérateur 2 = 0
1 opérateur 2 = 2

Y a-t-il, en php, un opérateur qui puisse faire ça:
FAUX opérateur "machaine" = FAUX
VRAI opérateur "machaine" = "machaine"

Voilà, je cheche donc un genre de multiplication logique...
En somme récupérer le contenu de ma chaine si la condition est vraie et FAUX si la condition est fausse. Ceci afin d'éviter une structure avec if et une affectation de variable.

Pour être plus explicite, en attendant je me suis fait une petite fonction:

function caourien($condition,$valeur)
{
	if($condition)
	{
		return $valeur;
	}
	else
	{
		return FALSE;
	}
}


Ce qui me permet ensuite à l'appel d'une fonction:

mafonction( caourien(macondition,$mavaleur) );


Et moi, ce que je voudrais pouvoir faire, c'est:

mafonction( macondition [i]opérateur[/i] mavaleur );


Est-ce possible ?
Modifié par Ono (02 Feb 2009 - 15:10)
Ca me fait un peu penser à l'opérateur or, mais ... à l'envers.


$x = $a or $b
Cette instruction fait que $x vaut $b si $a peut valoir false, sinon $x vaut $a. Comme tu vois c'est à peu près l'inverse de ce que tu veux. IL doit y avoir moyen de bidouiller ou essaie avec and à la place de or.
Ca me fait aussi penser à une construction que j'utilise souvent :

$val = (isset($_GET['val'])? $_GET['val'] : 'valeur par défaut');
a écrit :
<?php

$maVariable = (maCondition) ? maValeurSiCestVrai : false;

?>


Génial, ça fonctionne !


QuentinC, j'ai testé avec un AND, mais quand je fais:

$macondition && "machaine"

Avec $macondition VRAIE j'obtiens VRAI et non "machaine"

Merci à vous deux !
C'est normal, c'est un ET logique normal, ça renvoie toujours un booléen, pas comme en Javascript.

edit :
en javascript :
true && "bah"
donne "bah"

false && "bah"
donne false

false || "bah"
donne "bah"

true || "bah"
donne true

Pour avoir ce même comportement avec PHP, il faut utiliser OR et AND (non pas || et &&). (a confirmer cependant)
Modifié par fabien.menager (02 Feb 2009 - 15:23)
a écrit :
Pour avoir ce même comportement avec PHP, il faut utiliser OR et AND (non pas || et &&). (a confirmer cependant)

Oui il y a une différence entre && et and et entre || et or. Les premiers ne font que des opérations logiques, les seconds fonctionnent comme expliqué ci-dessus.
Pardon, je n'étais pas repassé par ici.
J'ai testé mais même avec un AND je récupère 1 à la sortie.