【发布时间】:2016-06-09 13:31:47
【问题描述】:
我有这个数组:
$ar = [ 'key1'=>'John', 'key2'=>0, 'key3'=>'Mary' ];
如果我写:
$idx = array_search ('Mary',$ar);
echo $idx;
我明白了:
key2
我在网上搜索过,这不是孤立的问题。似乎当关联数组包含 0 值时,如果未设置严格参数,array_search 将失败。
还有不止一个bug warnings,都被动机拒绝:“array_search() 默认做一个松散的比较”。
好的,我用严格的参数解决了我的小问题……
但我的问题是:在松散比较 'Mary'==0 或 'two'==0 或者这只是另一个 php 疯狂时,有一个体面、正当的理由?
【问题讨论】:
-
我认为它在获得第一个等于时会停止搜索。如果将
key3放在key2之前($ar = [ 'key1'=>'John', 'key3'=>'Mary', 'key2'=>0];)array_search将返回key3。 -
如array_search()手册中所说...如果搜索需要严格,则需要设置第3个参数...
-
@Naruto 是的,我把它写在我的问题中。我的问题是关于“为什么?”,而不是“如何”......
-
@LVameda 因为任何字符串的 int 都等于零
-
严格比较不使用 == 它使用 === ...这基本上就是严格的意义..