关于框架源码内的yii2\helpers\BaseArrayHelper的一处疑问 [ 2.0 版本 ]
下面这个方法判断元素($needle)是否在数组($haystack)内的
$haystack不单指数组,如果可以用foreach进行遍历也是可以的
public static function isIn($needle, $haystack, $strict = false)
{
if ($haystack instanceof \Traversable) { // 如果$haystack可以用foreach遍历
foreach ($haystack as $value) {
if ($needle == $value && (!$strict || $needle === $haystack)) {
return true;
}
}
} elseif (is_array($haystack)) {
return in_array($needle, $haystack, $strict);
} else {
throw new InvalidParamException('Argument $haystack must be an array or implement Traversable');
}
return false;
}
第五行
if ($needle == $value && (!$strict || $needle === $haystack)) {
为什么是 $needle === $haystack ,而不是 $needle === $value;
$strict 为 TRUE 时指的不是元素值相等并且类型相同吗?关原数组什么事呢?很疑惑,望大神普及一下这个知识点
最佳答案
其他 1 个回答
a40304
注册时间:2014-08-27
最后登录:2019-07-17
在线时长:13小时8分
最后登录:2019-07-17
在线时长:13小时8分
- 粉丝4
- 金钱345
- 威望20
- 积分675