我整个早上都在为 php in_array() 函数苦苦挣扎。最终我能够修复它,但我对为什么设置修复了问题有点困惑。
我将变量 $type 设置为字符串值(确切地说是“forum”),并将 $all_types 设置为如下所示的数组:
$all_types:
[protocol2] => protocol2
[group] => 0
[post] => 0
[forum] => 0
[article] => 0
[page] => 0
[protocol1] => 0
然后我有:
if (in_array($type,$all_types) !== FALSE) {
"Do stuff..."
}
而“做事……”不断发生。首先我认为这是因为它点击了数组中的“论坛”键,所以我尝试将数组更改为:
[0] => protocol2
[1] => 0
[2] => 0
[3] => 0
[4] => 0
[5] => 0
[6] => 0
但它仍然没有工作。最后,我将 STRICT 变量设置为 TRUE,它似乎工作正常,即使使用原始数组也是如此。
那么这是为什么呢?STRICT = TRUE 意味着针和大海捞针中的值必须是相同的类型,但是当它们匹配时它们不是都是字符串吗?当他们不将“论坛”与0进行比较时,出于某种原因,这是否匹配?