PHP - 仅当变量不为false时才为变量赋值

时间:2017-06-14 12:40:52

标签: php

我想知道是否有更简单的方法为我的变量赋值:

$foo = bar($baz);      // 'NULL' or '0' or '1' or '2' or ...
$foo = $foo ?: 0;     // '0' or '1' or '2' or ...

我的问题是$foo可以是NULL或正整数,包括0

如果值0,我希望它变为NULL,如果不是,则保持其值。

感谢您的回答。

修改

我无法合并2行,所以我的问题只针对第二行。

5 个答案:

答案 0 :(得分:3)

试试这个;)

$foo = intval( $foo );

答案 1 :(得分:1)

你可以这样做:

$foo = bar($baz) ?? 0;

如果您使用的是PHP7,那么您可以这样做:

specs

答案 2 :(得分:0)

也许你可以试试:

$foo = is_null($foo) ? 0: $foo;

答案 3 :(得分:0)

  

我无法合并2行,所以我的问题只针对第二行。

但这是一个可行的解决方案:

$foo = bar($baz) ?: 0;

三元运算符的简短版本意味着:如果不能将条件转换为false,则从条件中获取值

P.S。更好的方法是委托该逻辑发挥作用。

答案 4 :(得分:0)

试试这个

$ foo =($ foo = bar($ baz))? $ foo:0;