【发布时间】:2012-01-05 00:22:15
【问题描述】:
我有以下代码:
$data = array(); // prep array
$data['aardvark'] = true;
print_r($data); // output array
echo "\n";
var_dump(in_array('zebra', $data));
输出如下:
Array
(
[aardvark] => 1
)
bool(true)
尽管zebra 显然不在数组中。看起来这与 PHP 的松散类型系统有关。 (bool) 'zebra' 是true,并且数组中有一个true,所以in_array 返回true?
我想我可以看到逻辑,但它有缺陷。这是一个 PHP 错误吗?
干杯。
【问题讨论】:
-
不知道有没有用,但是可以使用array_key_exists在数组的keys中搜索
-
任何时候你把真、假、0或1放在一个数组中,
in_array()基本上没有用,除非你指定使用严格比较。 -
@animuson:当然你可以有带有数值的数组,那么
0或1与in_array()一起用在哪里?