PHP速记if else条件问题

时间:2013-01-27 08:29:30

标签: php if-statement

我无法理解我正在做的这个,如果没有其他简写代码

$item  = '<li '. ($avatar_size > 50) ? .'style="overflow:hidden">';

我只想检查条件是否为真,而不是添加内联样式。

编辑: 当然在上面的语句中,当条件为假时它也将删除>,所以我尝试了其他语句但没有工作。我确信我必须犯下愚蠢的错误,但无法弄清楚。

$item  = '<li '. ($avatar_size > 50) ? .'style="overflow:hidden"'.:. '' .'>';

2 个答案:

答案 0 :(得分:5)

没有“简写如果”,?:运算符始终必须包含? :。你能做的最好的就是:

$item  = '<li' . ($avatar_size > 50 ? ' style="overflow:hidden"' : null) . '>';

答案 1 :(得分:2)

我有一个较晚的答案,有更多的解释,虽然最初的答案是正确的。

关于三元运营商

$expression ? $value1 : $value2

三元运算符的功能类似于函数,例如它返回一个值。

哪个值?这是第一个参数发挥作用的地方。这是一个评估为truefalse的表达式。

如果为true,则返回第二个参数作为值。如果为false,则返回第三个参数。

由于您在外部处理字符串,因此返回的值将用作字符串。那么只返回字符串值是一个非常好的主意,并且不要将代码的读者与返回的NULL混淆。尽管如此,它仍将被转换为空字符串。

快捷方式三元运算符

$expression ?: $value

这个省略了true的第二个值,如果计算结果为true,则返回$ expression,否则返回$ value。这非常适合检查变量是否已定义并设置为值(除了那些计算为false的值),否则使用默认值。

通过反转表达式可以省略参数,但是在您的情况下不可能返回空字符串或其他内容。

$avatar_size <= 50 ?: ' style="overflow:hidden"'

这不起作用,因为如果头像大小低于50,则返回“true”并在字符串中使用 - 转换为"1"