查找数组中的值,几个常用函数比较

1.常用的in_array()

   这个函数返回的boolen

2.array_search()

   在数组中搜索给定的值,如果成功则返回相应的键名,只返回第一个匹配的key,要返回多个使用array_keys()

 如果是二维数组,不能用于查询二维数组中的某个值,只能是将一维数组整体搜索,返回key

3.array_keys()

  这个函数在不指定第二个参数的情况下,返回所有的key;在指定搜索值的情况下,返回所有匹配的key

<?php
/*
递归的搜索数组中值,并且返回key,可以是多维数组
*/
function recursive_array_search($needle,$haystack) {
    foreach($haystack as $key=>$value) {
        $current_key=$key;
        if($needle===$value OR (is_array($value) && recursive_array_search($needle,$value) !== false)) {
            return $current_key;
        }
    }
    return false;
}
$arr = array(array('1',2,3),array(3,4,5));
$arr2= array(1,2,3);

//整体搜索,返回key
var_dump(array_search(array(3,4,5),$arr));//int(1)
//单个搜索,是不可以的
var_dump(array_search(5,$arr));//bool(false)
//递归的搜索,可以是多维数组
var_dump(recursive_array_search(5,$arr));//int(1)
?>
<?php
$a = array(array('p', 'h'), array('p', 'r'), 'o');

if (in_array('p', $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";
}
?>


你可能感兴趣的:(查找数组中的值,几个常用函数比较)