php数组匹配数据,php 查找数组值程序

在php中查找数组中指定值的方法有很多,下面我来介绍php中数组查找函数in_array(),array_key_exists(),array_search()用法

查找一个元素是否在数组中,一共有上面三种做法:

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);

if(array_key_exists('first',$search_array)) {

echo"The 'first' element is in the array";

}

?>

Example #2 array_key_exists() 与 isset() 的对比isset() 对于数组中为 NULL 的值不会返回 TRUE,而 array_key_exists() 会.

实例代码如下:

$search_array=array('first'=> null,'second'=> 4);

// returns false

isset($search_array['first']);

// returns true

array_key_exists('first',$search_array);

?>

mixed array_search ( mixed $needle, array $haystack [, bool $strict] )第一个参数是需要查找的值,第二个参数是数组,最后一个参数是指查找的时候是否检查数据类型是否相同.

实例代码如下:

$a=array("a"=>"Dog","b"=>"Cat","c"=>"Horse");

echoarray_search("Dog",$a);

?>

$a=array("a"=>"5","b"=>5,"c"=>"5");

echoarray_search(5,$a,true);

?>

上述代码将输出下面的结果:

b

从这里来看,在数据量不大的时候,比如小于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完全循环一遍的话是否有更高效的算法?

实例代码如下:

$result=array();

for($i= 501;$i

if(!isset($arr[$i]))continue;

$result[] =$arr[$i];

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值