我已经继承了一些旧代码,并且发现了各种奇怪的代码。这是一个摇头丸:
if( isset($_POST['name_str']) == 'value of input element' ) {
此处“ name_str”是类型为button的输入元素的名称,其值为“ input element value”。我了解isset()
仅返回布尔值。在这里,程序员认为isset()函数将评估该变量是否存在以及该值设置为什么。我以前从未见过。这是速记吗?
答案 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变量进行比较。