2013-03-17 6 views
5

Czy można echo używać ||, tak aby użyła pierwszej zmiennej, która jest równa true?Czy można || operator służy do wybierania między wartościami typów nie-boolowskich w PHP?

np

$a = false; 
$b = 'b'; 
echo $a || $b || 'neither'; // evaluates to 1 ? 
+1

Jeśli masz listę rzeczy (więcej niż dwa), to możesz rozważyć: 'echo current (array_filter (array ($ a, $ b, 'ani')));' – mario

+1

To brzmi jak twoje pytanie brzmi bardziej jak "Czy operator || może być używany z typami innymi niż boolowskie?" jeśli rozumiem to poprawnie. Wydajesz się mówić, że $ a || $ b || "żaden" nie zwrócił 1. –

+0

@MartinAtkins tak, byłoby idealnie! –

Odpowiedz

5

Ternary operator

echo (($a) ? : $b) ? : 'neither'; 
+0

Technicznie, to już nie jest operator trójskładnikowy; '$ a? $ b: $ c' jest tak nazwane, ponieważ ma 3 operandy (i ponieważ nie robi tego żaden inny operator standardowy). '$ a?: $ b' jest operatorem binarnym, który wygląda i działa trochę jak operator trójskładnikowy. '' – IMSoP

+0

Dokumenty nadal określają je jako potrójny operator '' –

+0

Awesome! Dzięki! –

1

Ostateczny trójargumentowy

$a = false; 
$b = 'b'; 
echo ($a)?$a:(($b)?$b:'neither'); 
1
echo $a ? $a : ($b ? $b : ($c ? $c : 'neither')); 

i iść na tak, jeśli masz więcej zmiennych, ale będzie się brzydkie i ciężko czytać, gdy jest za długi.

Powiązane problemy