2012-08-06 93 views
0

快速的问题:为什么下面总是比较为假,尽管在打印时都显示22?不,这个常量没有用引号定义int。整数常量不等于常规整数?

<?php 
... 
if(count($_POST) != _NUM_TEAM_REG_FORM_FIELDS_) 
    $fields = $_POST; 
else die(Core::FormatError("Incorrect number of form fields.")); 

?> 

谢谢!

+2

你是如何定义常量的? – 2012-08-06 22:26:09

+1

像这样:define(“_ NUM_TEAM_REG_FORM_FIELDS_”,22);请注意,此网站会在常量标识符前后自动省略下划线。 – Lee 2012-08-06 22:26:49

+0

请添加两者的var_export,然后您可以看到它们是否是字符串。另外我想你做了一个编辑,把'!=='改成'!='? – 2012-08-06 22:26:50

回答

3

Why does the below always compare as false, despite both showing 22 when printed? 因为你有错误地比较它。 (即已经使用!=代替==)

尝试下面的代码代替,

if(count($_POST) == _NUM_TEAM_REG_FORM_FIELDS_) 
    $fields = $_POST; 
else die(Core::FormatError("Incorrect number of form fields.")); 

注意,我比较了它们作为公平的。

+1

好悲伤。我只是意识到。这会教我如何使用头痛和止痛药!多么尴尬。谢谢。 – Lee 2012-08-06 22:33:27

+0

不要担心它发生。 :) – Kalpesh 2012-08-06 22:34:18

+0

嗨@Lee,别忘了接受答案:P – Kalpesh 2012-08-06 22:35:58