在php中混淆if语句

时间:2015-07-07 14:04:57

标签: php if-statement legacy-code

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

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参数),它将不返回任何内容,因此在以下位置检查空值:

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

我还不完全清楚为什么用这种方式书写

1 个答案:

答案 0 :(得分:4)

该行

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

获取翻译成......

if (empty($role_data[0]))

...由PHP解释器提供。这段代码可能是一个“笑话”,一个有趣的黑客或错误的行:

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

..有点道理。