这是PHP的简写吗?

时间:2019-06-07 18:02:42

标签: php

我已经继承了一些旧代码,并且发现了各种奇怪的代码。这是一个摇头丸:

if( isset($_POST['name_str']) == 'value of input element' ) {

此处“ name_str”是类型为button的输入元素的名称,其值为“ input element value”。我了解isset()仅返回布尔值。在这里,程序员认为isset()函数将评估该变量是否存在以及该值设置为什么。我以前从未见过。这是速记吗?

3 个答案:

答案 0 :(得分:2)

这不是简写形式,也不是其他特殊内容。但是我认为这是很糟糕的逻辑。

说明: 该条件宽松地比较输入元素的值是false还是true,同时'name_str'是false或true。由于只有两个等号,因此比较等式的两边都不会考虑类型,这是一个大问题。

当未设置$_POST['name_str']'value of input element'是发现here的以下任何虚假条件时,将为真:

the boolean FALSE itself
the integers 0 and -0 (zero)
the floats 0.0 and -0.0 (zero)
the empty string, and the string "0"
an array with zero elements
the special type NULL (including unset variables)

设置$_POST['name_str']且“输入元素的值”除以上内容外,都是正确的。

答案 1 :(得分:2)

不,这不是简写,只是错误。程序员的期望是不正确的。

我在初学者的SO问题中经常看到此错误,很难相信它会使其成为生产代码。

答案 2 :(得分:0)

这是错误的编码,如果您在if中运行它,则'input element value'是一个真实的语句

if('value of input element') echo 'it will be true';

因此,如果将其设置为任何返回true的值,则从逻辑上讲,您将拥有if(true == true)

该字符串未与$ _POST变量进行比较。