gpt4 book ai didi

PHP的变量类型宽大

转载 作者:可可西里 更新时间:2023-11-01 14:05:15 25 4
gpt4 key购买 nike

最近对 PHP 的 in_array() 帮助页面 (http://uk.php.net/manual/en/function.in-array.php#106319) 的评论指出,由于 PHP 的“对变量类型的宽容”,出现了一些异常结果,但没有给出任何解释为什么会出现这些结果。特别是,我不明白为什么会发生这些:

// Example array

$array = array(
'egg' => true,
'cheese' => false,
'hair' => 765,
'goblins' => null,
'ogres' => 'no ogres allowed in this array'
);

// Loose checking (this is the default, i.e. 3rd argument is false), return values are in comments
in_array(763, $array); // true
in_array('hhh', $array); // true

或者为什么发帖者认为以下是奇怪的行为

in_array('egg', $array); // true
in_array(array(), $array); // true

(肯定'egg'确实出现在数组中,PHP不关心它是键还是值,而且有一个数组,PHP不关心它是否为空?)

谁能指点一下?

最佳答案

763 == true 因为 true 等于任何非 0、NULL 或 '' 的值,数组也是如此,因为它是一个值(不是对象)。

为了避免这个问题,你应该将第三个参数作为 TRUE 传递给 STRICT,因此,is_rray 将执行 ===,这是一个类型相等性,所以然后

763 !== 真

array() 也不会!== true

关于PHP的变量类型宽大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8258732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com