我无法理解我正在做的这个,如果没有其他简写代码
$item = '<li '. ($avatar_size > 50) ? .'style="overflow:hidden">';
我只想检查条件是否为真,而不是添加内联样式。
编辑:
当然在上面的语句中,当条件为假时它也将删除>
,所以我尝试了其他语句但没有工作。我确信我必须犯下愚蠢的错误,但无法弄清楚。
$item = '<li '. ($avatar_size > 50) ? .'style="overflow:hidden"'.:. '' .'>';
答案 0 :(得分:5)
没有“简写如果”,?:
是运算符且始终必须包含?
和 :
。你能做的最好的就是:
$item = '<li' . ($avatar_size > 50 ? ' style="overflow:hidden"' : null) . '>';
答案 1 :(得分:2)
我有一个较晚的答案,有更多的解释,虽然最初的答案是正确的。
关于三元运营商
$expression ? $value1 : $value2
三元运算符的功能类似于函数,例如它返回一个值。
哪个值?这是第一个参数发挥作用的地方。这是一个评估为true
或false
的表达式。
如果为true,则返回第二个参数作为值。如果为false,则返回第三个参数。
由于您在外部处理字符串,因此返回的值将用作字符串。那么只返回字符串值是一个非常好的主意,并且不要将代码的读者与返回的NULL混淆。尽管如此,它仍将被转换为空字符串。
快捷方式三元运算符
$expression ?: $value
这个省略了true的第二个值,如果计算结果为true,则返回$ expression,否则返回$ value。这非常适合检查变量是否已定义并设置为值(除了那些计算为false的值),否则使用默认值。
通过反转表达式可以省略参数,但是在您的情况下不可能返回空字符串或其他内容。
$avatar_size <= 50 ?: ' style="overflow:hidden"'
这不起作用,因为如果头像大小低于50,则返回“true”并在字符串中使用 - 转换为"1"
。