in_array的第3个参数

使用 in_array() 判断数组中是否有某个值,如果省略了第3个参数,有时得到的结果可能毫无意义,例如下面这段代码

<?php

$arr = [true, false];
$f = in_array('Hello', $arr);
if($f)
  echo 'in array';
else
  echo 'not found';

//结果输出 in array

改成in_array('Hello', $arr, true)即可解决这个问题,可以点此链接在 php 沙盒中执行代码

在 JS 中不存在这个问题,例如用 indexOf() 函数改写一下就是这样的
in_array的第3个参数

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 9

没加true 是 ==

1年前 评论
Bing_c (作者) 1年前
zhaiduting (楼主) 1年前

没加true 是 ==

1年前 评论
Bing_c (作者) 1年前
zhaiduting (楼主) 1年前
Jyunwaa

还有一个array_search()

1年前 评论
AloneUtopia

细思极恐 :see_no_evil:

1年前 评论

我个人觉得还是匹配的类型转换的机制有问题,越简单的数据类型,转换的时候,优先级越高,我感觉应该反过来,比如bool和字符串,转字符串,数字和bool,转数字,

1年前 评论

库函数strtol_internal 的调用非常之频繁,这个库函数strtol_internal 是原来是 strtol 的别名,简单的说就是把字符串转换成长整形,可以推测 PHP 引擎已经检测到这是一个字符串型的数字,所以期望将他们转换成长整型来比较。避免使用 in_array 判断大型数组时间复杂度是 O(n)

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
未填写
文章
63
粉丝
17
喜欢
140
收藏
118
排名:132
访问:7.4 万
私信
所有博文
社区赞助商