我有这个PHP:
$ec = $trimmed['emails'];//has a value of "email"
$dc = $trimmed['date'];//has a value of "timestamp"
$data = array("email","domain","timestamp");
$num = count($data);
for ($i=0; $i<$num; $i++){
if ($data[$i] == $ec) {
$ec = $i;
} else if ($data[$i] == $dc) {
$dc = $i;
}
}
当我运行这个PHP $ ec最终等于域的位置而不是电子邮件。此外,很明显,第一个认为“电子邮件”和“域”都相当于“电子邮件”,因为当我第一次将$ ec显示为“电子邮件”时,我回应了循环。有什么想法吗?
答案 0 :(得分:6)
因为在第二次迭代中$ec
(现在是0
)与"domain"
进行比较,后者评估为真,用简单的var_dump( 0 == "domain");
进行验证,输出{ {1}}。
正如William Van Rensselaer在下面建议的那样,您可以使用true
,或查看函数array_search,这将完全符合您的目标。
示例:
===
答案 1 :(得分:3)
在循环的第一次迭代中,当$i == 0
,$ec
设置为0时,正确。
在循环的第二次迭代时$i == 1
它针对$data[1]
的新值测试$ec
。因此,"domain"
被解释为数字(0),0 == 0
为true
,因此$ec
设置为1。