PHP中是否存在较短的if语句?

0 php language-features ternary-operator language-construct

是否有可能以某种方式将其重写为更短?

if (isset($_POST['pic_action'])){
  $pic_action=$_POST['pic_action'];
}
else { 
  $pic_action=0;
}
Run Code Online (Sandbox Code Playgroud)

我在某个地方见过它但忘了......:/

顺便说一句,如果你愿意,请解释你的代码!

谢谢

Gum*_*mbo 18

您可以使用条件运算符?::

$pic_action = isset($_POST['pic_action']) ? $_POST['pic_action'] : 0;
Run Code Online (Sandbox Code Playgroud)

条件运算表达式expr1 ? expr2 : expr3的计算结果为返回值expr2,如果的评价返回值expr1 ; 否则表达式求值为已计算的返回值expr3.因此,如果isset($_POST['pic_action'])求值为true,则整个表达式将计算得到的值$_POST['pic_action']0其他值的求值.

因此,在短期:如果isset($_POST['pic_action'])为真,$pic_action将持有的价值$_POST['pic_action']0其他.

  • 更常见/也称为*三元运算符* (5认同)
  • @Justin Johnson:但是要纠正它只是*a*三元运算符而不是**三元运算符.(虽然现在我脑子里还没有其他三元运算符.) (2认同)

Fil*_*kić 8

Gumbo的答案可能是最好的方法.

它也可以写成:

$pic_action = 0;
if (isset($_POST['pic_action'])){
    $pic_action=$_POST['pic_action'];
}
Run Code Online (Sandbox Code Playgroud)

  • 我通常在三元运算符上使用这个,因为我发现更容易理解正在发生的事情或在IF块中有更多逻辑要做的事情 (2认同)