我有一个数组。考虑一下$a['info'] == 5
。所以我可以写:
<?php echo $a['info'] . ' children'; ?>
得到:“5个孩子”。
通常,我可以写
<?php echo (isset($a['info']) ? $a['info'] : '0') . ' children'; ?>
$a['info'] == 0
或未设置,则获取“0个孩子”。但
<?php echo ($a['info'] | '0') . ' children'; ?>
也有效,但我不知道为什么。
非常感谢。
编辑:也适用于$a['info'] ?: '0'
。
答案 0 :(得分:0)
echo ($a['info'] | '0')
这只是一个OR操作,它会像这样,0 OR 0 = 0,5 OR 0 = 5,所以你会得到正确的答案。
单管只不过是 OR操作。
按位OR
答案 1 :(得分:0)
管道是字节或操作,所以
$val | 0
等于
$val ? $val : 0
但是这段代码不检查变量是否存在,所以如果不存在 - 会引发NOTICE,但代码也会起作用,因为PHP boolean cast规范。
isset
检查变量是否存在,如果它退出,即使它的值为0,isset
也返回true,所以代码
echo (isset($a['info']) ? $a['info'] : '0') . ' children';
如果变量不退出,则回显“0个孩子”,而不是 0 。