我有以下代码:
$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 错误吗?
干杯。
最佳答案
不是错误。你完全正确。要正确找到您要查找的内容,您必须这样做:
if (in_array('zebra', $data, true)) {
尽管在同一数组(字符串和 bool 值)中存储不同数据类型的情况可能很少见。如果您存储的数据不是列表,您很可能应该使用对象。
关于php - 这种奇怪的 PHP 行为的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8246770/