我有以下代码:
$data = array(); // prep array
$data['aardvark'] = true;
print_r($data); // output array
echo "\n";
var_dump(in_array('zebra', $data));
Run Code Online (Sandbox Code Playgroud)
输出如下:
Array
(
[aardvark] => 1
)
bool(true)
Run Code Online (Sandbox Code Playgroud)
尽管事实上zebra显然不在阵列中.看起来它与PHP的松散类型系统有关.(bool) 'zebra'是true,并且true数组中有一个所以in_array返回true?
我想我可以看到逻辑,但它有缺陷.这是一个PHP错误吗?
干杯.
不是错误。你说得完全正确。要正确找到您要查找的内容,您必须执行以下操作:
if (in_array('zebra', $data, true)) {
Run Code Online (Sandbox Code Playgroud)
尽管在同一数组(字符串和布尔值)中存储不同数据类型的情况可能很少见。如果您存储的数据不是列表,您很可能应该使用对象。