2010-12-11 3 views
3
$val1 = false; 
$val2 = 10; 

$variable = $val1 || $val2; 

le code ci-dessus fait $variable = true.

Y at-il un opérateur en PHP qui ferait $variable prendre la valeur de $val2, si $val1 est faux? Je pensais que cela serait ||, mais il retourne vrai que si l'une des valeurs sont vraies ou fausses, si les deux sont faux ...

Répondre

5

L'opérateur ternaire

$variable = ($val1) ? $val1 : $val2; 

ou (en PHP 5.3+)

$variable = ($val1) ?: $val2; 
+1

Vous devriez mentionner que la seconde possibilité n'est disponible que dans PHP> = 5.3. –

+0

(+1) Je tapais une réponse, puis j'ai vu le vôtre apparaître. Je n'étais pas au courant de la deuxième syntaxe! – ClosureCowboy

+0

@Felix, c'est ce que je voulais faire à l'origine, et la raison pour laquelle j'ai mis la version plus longue d'abord :) Fixe, acclamations. –

3

L'opérateur || fait un logique ou, c'est pourquoi vous obtenez seulement vrai ou faux arrière.

Vous pouvez utiliser l'opérateur PHP ternary:

$variable = $val1? "default value" : $val2; 
2

Vous pouvez également opérateur absue priorité:

$variable = $value1 or $variable = "value2"; 

or est plus faible que =. Il devient plus lisible si vous ajoutez des espaces supplémentaires. Mais c'est plus ou moins une solution de contournement pour le manque de?: Dans PHP < 5.3.

+0

intéressant, celui-ci fonctionne avec plusieurs valeurs comme '$ var = $ a ou $ var = $ b ou ....' – Alex