在为布尔值生成select
标记时,我使用以下代码:
<select name="name" id="id">
<option value="0"<?php if(empty($value)): ?> selected="selected"<?php endif; ?>>Off</option>
<option value="1"<?php if($value): ?> selected="selected"<?php endif; ?>>Off</option>
</select>
所以,问题是,这个地图是否正确,这样两个选项都不会有selected="selected"
属性?
答案 0 :(得分:3)
我在这里看到使用empty()
的唯一原因是为了避免在未设置$value
的情况下发出警告。但在这种情况下,您会收到下一行的警告。使用!
否定布尔值更常见,更漂亮。
但要回答你的问题,是的,你的假设是安全的。
更新:documentation明确声明
empty()与(boolean)var 相反,但未设置变量时不会生成警告。
答案 1 :(得分:1)
(bool) $value
相当于!empty($value)
,!$value
相当于empty($value)
。有关详细信息,请参阅PHP type comparison tables。
答案 2 :(得分:0)
eInteresting。这么说:
$value
是 empty($value)
相当于断言
(bool) $value
等于 !empty($value)
在你的示例中,代码$value
是一个bool,在这种情况下断言是真的(而且Michael Krelin - 黑客的答案是你的假设是安全的)。
但这个断言是一般是真的吗?考虑到手册的empty()
文档,我认为可能是。