php 查找数组值程序
查找一个元素是否在数组中,一共有上面三种做法:
in_array '函数在数组中搜索给定的值。in_array(value,array,type)type 可选。如果设置该参数为 true,则检查搜索的数据与数组的值的类型是否相同。
array_key_exists 'array_key_exists() 函数判断某个数组中是否存在指定的 key,如果该 key 存在,则返回 true,否则返回 false。array_key_exists(key,array)
Example #1 array_key_exists() 例子
代码如下 | 复制代码 |
$search_array = array('first' => 1, 'second' => 4); |
Example #2 array_key_exists() 与 isset() 的对比
isset() 对于数组中为 NULL 的值不会返回 TRUE,而 array_key_exists() 会。
代码如下 | 复制代码 |
$search_array = array('first' => null, 'second' => 4); // returns false // returns true |
mixed array_search ( mixed $needle, array $haystack [, bool $strict] )
第一个参数是需要查找的值,第二个参数是数组,最后一个参数是指查找的时候是否检查数据类型是否相同。
代码如下 | 复制代码 |
$a=array("a"=>"Dog","b"=>"Cat","c"=>"Horse");
$a=array("a"=>"5","b"=>5,"c"=>"5"); |
从这里来看,在数据量不大的时候,比如小于1000,查找用哪一种都行,都不会成为瓶颈;
当数据量比较大的时候,用array_key_exists比较合适。
当然这里array_key_exists占用的内存比较大,经测算
数组结构是: array(1, 2, 3, ..)和 array(1 => true, 2 => false, ..)
他们内存使用比值为1:2;
注意:array_key_exist,要比in_array效率高十几甚至几十倍
一个简单的算法
假设数组有1000个元素,键值为小于1000000的无序的正整数,且不连续,如下
$arr = array(1 => 'sadas', 20 => 'aasd', 5002 => 'fghfg', 190023 => 'rty', 248 => 'kj', 76 => 'sddd' ,...);
现在要获取数组$arr中键的值大于500小于600的元素,不用foreach完全循环一遍的话是否有更高效的算法?
解答
代码如下 | 复制代码 |
|
推荐阅读
-
新手咨询:php程序中怎么取ajax中的值?
-
php将一维数组转换为每3个连续值组成的二维数组,维数二维数组_PHP教程
-
php计算多维数组中所有值总和的方法_PHP
-
浅谈PHP检查数组中是否存在某个值 in_array 函数_php实例
-
php数组函数序列之array_unique() - 去除数组中重复的元素值_PHP教程
-
通过PHP current函数获取未知字符键名数组第一个元素的值
-
php 如何获取数组第一个值_PHP
-
PHP递归调用数组值并用其执行指定函数的方法
-
php 计算多维数组中所有值的总和,多维数组
-
javascript数组与php数组的地址传递及值传递用法实例,javascript数组