php 中令人困惑的 if 语句

Confusing if statement in php

我正在刷新一些旧代码(别人写的),并遇到了这个:

if ( empty ( $role_data["role_id" == 1]))

人们会使用上面的而不是上面的原因(如果有的话)是什么?:

if ( $role_data["role_id"] != 1)

IMO 的可读性更差,而且代码更多。性能不是这里的一个因素。

--编辑--

我应该提一下,预期输入 ($role_data["role_id"]) 是一个介于 0 - 5(含)之间的数字


--更多信息--

我第一次误解了代码。 但这是正在发生的事情:

$role_id = htmlspecialchars ( mysql_real_escape_string ( $_GET["role_id"] ) );
$role_data = $db->fctSelectData ( "core_role" , "`role_id` = '" . $role_id . "'" );

这将获得创建角色的权限。但是如果首先给出一个无效的 $role_id(通过 $_GET 参数),它 returns 什么都没有,因此检查空值:

if ( empty ( $role_data["role_id" == 1] ) )

为什么这么写我还是不太明白

if (empty($role_data["role_id" == 1]))

翻译成...

if (empty($role_data[0]))

...由 PHP 解释器。此代码可能是 "joke"、有趣的 hack 或错误,如行:

if (empty($role_data["role_id"]) == 1)

..有点道理。