php in_array 函数使用说明与in_array需要注意的地方说明

in_array
(PHP 4, PHP 5)

in_array — 检查数组中是否存在某个值

说明


代码如下:

bool in_array ( mixed $needle , array $haystack [, bool $strict ] )

在 haystack 中搜索 needle ,如果找到则返回 TRUE,否则返回 FALSE。

如果第三个参数 strict 的值为 TRUE 则 in_array() 函数还会检查 needle 的类型是否和 haystack 中的相同。

Note: 如果 needle 是字符串,则比较是区分大小写的。

Note: 在 PHP 版本 4.2.0 之前,needle 不允许是一个数组。

Example #1 in_array() 例子


代码如下:

<?php
$os = array("Mac", "NT", "Irix", "Linux");
if (in_array("Irix", $os)) {
echo "Got Irix";
}
if (in_array("mac", $os)) {
echo "Got mac";
}
?>

第二个条件失败,因为 in_array() 是区分大小写的,所以以上程序显示为:
Got Irix

Example #2 in_array() 严格类型检查例子


代码如下:

<?php
$a = array('1.10', 12.4, 1.13);

if (in_array('12.4', $a, true)) {
echo "'12.4' found with strict check\n";
}
if (in_array(1.13, $a, true)) {
echo "1.13 found with strict check\n";
}
?>

上例将输出:

1.13 found with strict check

Example #3 in_array() 中用数组作为 needle


代码如下:

<?php
$a = array(array('p', 'h'), array('p', 'r'), 'o');

if (in_array(array('p', 'h'), $a)) {
echo "'ph' was found\n";
}
if (in_array(array('f', 'i'), $a)) {
echo "'fi' was found\n";
}
if (in_array('o', $a)) {
echo "'o' was found\n";
}
?>

上例将输出:

'ph' was found
'o' was found

需要注意的地方:

假如:

先声明一个数组为:

  $arr = array(*);

那么则有:

  in_array(0, $arr) == true

令人费解! {弱语言}

解决办法:
    in_array(strval(0), $arr, true))

(0)

相关推荐

  • 类似php的js数组的in_array函数自定义方法

    PHP的数组函数in_array()非常方便,可JS就不是了.其实我很不喜欢JS的数组~ 别说了,直接上方法 复制代码 代码如下: Array.prototype.in_array = function(e) { for(i=0;i<this.length;i++) { if(this[i] == e) return true; } return false; } 或者 复制代码 代码如下: Array.prototype.in_array = function(e) { for(i=0;i<

  • php数组查找函数in_array()、array_search()、array_key_exists()使用实例

    php在数组中查找指定值是否存在的方法有很多,记得很久以前我一直都是傻傻的用foreach循环来查找的,下面我主要分享一下用php内置的三个数组函数来查找指定值是否存在于数组中,这三个数组分别是 in_array(),array_search(),array_key_exists(). 首先分别介绍一下各自的定义与作用 in_array(value,array,type) 该函数的作用是在数组array中搜索指定的value值,type是可选参数,如果设置该参数为 true ,则检查搜索的数据与

  • 使用js判断数组中是否包含某一元素(类似于php中的in_array())

    while case速度最快 复制代码 代码如下: function contains(arr, str) {    var i = arr.length;    while (i--) {           if (arr[i] === str) {           return true;           }       }       return false;}

  • PHP中in_array函数使用的问题与解决办法

    先介绍一下需求背景: 发票方式: 0=捐赠(不要问我为什么,历史原因) 1=对中寄送 2=索取 3=电子发票 现在要对用户提交的数据进行检测: php;auto-links:false;">if(!in_array($_POST['invoice_action'], array(0,1,2,3))){ throw new Exception('请选择正确的发票方式'); } 这个时候出现一个问题,如果压根就不存在$_POST['invoice_action']这个值,为什么没有抛出异常?

  • 2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题

    但是如果数组比较大的时候,性能就会下降,运行的就会久一点,那如果针对在大数组情况下做优化呢,下面说两种方法(都是通过自定义函数来实现): 1.数组key与value翻转,通过isset判断key是否存在于数组中 复制代码 代码如下: /** * in_array is too slow when array is large */public static function inArray($item, $array) {    $flipArray = array_flip($array); 

  • PHP函数in_array()使用详解

    PHP有一个系统函数is_array()可以判断一个值是否在数组中. 语法如下: 复制代码 代码如下: in_array(value,array,type) return boolen 参数说明: value :要搜索的值 array : 被搜索的数组 type : 类型,true全等 ,false非全等(默认) 示例一:普通使用 代码: 复制代码 代码如下: $str = 1;   $arr = array(1,3,5,7,9);   $boolvalue = in_array($str,$a

  • php数组函数序列之in_array() 查找数组值是否存在

    in_array() 定义和用法 in_array() 函数在数组中搜索给定的值. 语法 in_array(value,array,type) 参数 描述 value 必需.规定要在数组搜索的值. array 必需.规定要搜索的数组. type 可选.如果设置该参数为 true,则检查搜索的数据与数组的值的类型是否相同. 说明 如果给定的值 value 存在于数组 array 中则返回 true.如果第三个参数设置为 true,函数只有在元素存在于数组中且数据类型与给定值相同时才返回 true.

  • PHP IN_ARRAY 函数使用注意事项

    另外,我们在 控制结构比较两个数值是否一直的时候,也应该尽量使用 === 来代替 ==(当然,这个也根据具体的业务逻辑选用比较合适的). 小弟来解释下 为什么 var_dump(in_array(0, array('s' )); 这句话的结果是bool(true). 因为in_array会将0 和's' 进行比较,0是number类型,'s'是string类型,根据php manual 中"Comparison Operators" 一章的说明可知,number 和string进行 比

  • php数组函数序列之in_array() - 查找数组中是否存在指定值

    in_array()定义和用法 in_array() 函数查找数组中是否存在指定值. 语法 in_array(value,array,type)参数 描述 value 必需.规定要在数组搜索的值. array 必需.规定要搜索的数组. type 可选.如果设置该参数为 true,则检查搜索的数据与数组的值的类型是否相同. 说明 如果给定的值 value 存在于数组 array 中则返回 true.如果第三个参数设置为 true,函数只有在元素存在于数组中且数据类型与给定值相同时才返回 true.

  • 遭遇php的in_array低性能问题

    PHP的性能一直在提高.然而,若是用的不恰当,或是一个不留神,还是可能会踩到PHP内部实现方面的坑的.我在前几天的一个性能问题上就碰到了. 事情是这样子的,一位同事反馈我们的一个接口每次返回需要5秒之久,我们一起review了代码,"惊喜"的发现居然在循环(大约900次)中调用了一个读缓存的操作,而这个缓存的key并没有改变,因此我们把这段代码移到了循环外面,再测,接口返回时间降到了2秒,呜呼!虽然提升了1倍,但明显不是我们能接受的结果! 出现性能问题的代码量并不大,我们排除了IO问题

随机推荐