php - 这种奇怪的 PHP 行为的原因是什么?

标签 php arrays types

我有以下代码:

$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/

相关文章:

java - 使用for循环将三个一维合并为一个多维数组

javascript - 从 JSON 数组中拼接或删除元素列表

arrays - XML 仅显示 Swift 数组中的最后一项

postgresql - 如何使用动态 SQL 设置复合变量字段的值

sql-server - 在不同的设置上使 SQL Server 中的 Microsoft Access 表相同

javascript - Html 表行 ID 复选框

php - 一页上有 2 个或更多 ACF WordPress

php - 你如何使文本字段自动添加 - 在某些数字之后

php - mysql查询锻炼不在我的 friend 列表中的 friend 的 friend

hibernate - JPA 实体 ID - long 或 Long