在PHP中,“if($ value)”是“if(empty($ value))”的倒数吗?

时间:2009-12-28 11:55:17

标签: php

在为布尔值生成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"属性?

3 个答案:

答案 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()文档,我认为可能是。