是否可以使用一个三元运算符设置多个变量?

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)

但是,我不确定这是否正确.我很好奇第一个例子中发生了什么.

Mik*_*ike 7

正如Chadwick所解释的那样,使用ANDOR逻辑运算符将无法按照您希望的方式运行:

$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)