sto*_*ain 2 php ternary-operator
我想看看是否可以用一个三元运算符设置多个变量.我有点谷歌了,但没有拿出任何东西.我开始测试一些想法,发现了一些接近 - 但也有一些奇怪的行为; 关于发生了什么的任何想法?并且,是否可以var在单个三元运算中设置多个?如果是这样,有没有正确的方法呢?
$i=9;
($i==9)?($w=3|$r=2):($w=7|$r=1);
echo 'w= '.$w.' r= '.$r;//w= 3 r= 2
$i=9;
($i==9)?($w=4|$r=2):($w=7|$r=1);
echo 'w= '.$w.' r= '.$r;//w= 6 r= 2
$i=9;
($i==9)?($w=3|$r=7):($w=7|$r=1);
echo 'w= '.$w.' r= '.$r;//w= 7 r= 7
$i=444;
($i==9)?($w=4|$r=2):($w=7|$r=1);
echo 'w= '.$w.' r= '.$r;//w= 7 r= 1
$i=444;
($i==9)?($w=4|$r=2):($w=1|$r=1);
echo 'w= '.$w.' r= '.$r;//w= 1 r= 1
Run Code Online (Sandbox Code Playgroud)
谢谢...
编辑:
我做了一些测试,发现这个工作正常:
($i==9)?($w=4 AND $r=7):($w=7 AND $r=1);
Run Code Online (Sandbox Code Playgroud)
但是,我不确定这是否正确.我很好奇第一个例子中发生了什么.
正如Chadwick所解释的那样,使用AND或OR逻辑运算符将无法按照您希望的方式运行:
$i = 0; $w = 0; $r = 0;
($i==9) ? ($w=4 AND $r=7) : ($w=7 AND $r=1);
echo "w = $w, r = $r\n";
// w = 7, r = 1
$i = 0; $w = 0; $r = 0;
($i==9) ? ($w=0 AND $r=7) : ($w=0 AND $r=1);
echo "w = $w, r = $r\n";
// w = 0, r = 0
Run Code Online (Sandbox Code Playgroud)
但是,如果您确实想在一个语句中进行多个赋值,则可以使用该list构造:
$i = 0; $w = 0; $r = 0;
($i==9) ?
(list($w, $r) = array(4, 7)) :
(list($w, $r) = array(7, 1));
echo "w = $w, r = $r\n";
// w = 7, r = 1
$i = 0; $w = 0; $r = 0;
($i==9) ?
(list($w, $r) = array(0, 7)) :
(list($w, $r) = array(0, 1));
echo "w = $w, r = $r\n";
// w = 0, r = 1
Run Code Online (Sandbox Code Playgroud)