在操作php数组时,有时候会需要在一堆数组中查找指定的内容,那么php代码中常见的几种在数组中的查找数组的索引与内容的方式有哪些呢?
在我们需要快速的简单验证一个一维数组中是否已经存在指定的值时用的最多的就是in_array()函数.
in_array函数不需要像foreach循环数组,然后逐一进行if判断值是否存在,而消耗大量的系统资源。它可以直接在数组中搜寻指定值,如果存在就会返回true,不存在就会返回false.
示例1:
<?php
$ssarr = array("a1", "a2", "a3");
if(in_array("a1",$ssarr)){
echo "存在指定值";
}else{
echo "没有找到指定值";
}
?>
首先我们定义了一个ssarr数组,他的值分别有a1、a2、a3,然后通过if判断a1是否在定义的数组ssarr中,分别输出查找结果.
array_search()函数与in_array()函数的功能一样,都是在数组中查找指定的值,如果没有查找到会返回false,不同之处就在与in_array找到指定值后返回的是true,而array_search能够返回匹配元素对应的键名.
示例2:
<?php
$ssarr = array("a"=>"www","b"=>"bbb","c"=>"333");
echo array_search("bbb",$ssarr);
?>
输出结果为:"b".
以上的代码都是对指定值搜索,那么对键名的查找,可以使用array_key_exists()函数,它可以判断数组中是不是存在指定的键名,如果名称存在返回true,不存在就返回false.
示例3:
<?php
$ssarr = array("a"=>"ww","b"=>"555");
if(array_key_exists("b",$ssarr)){
echo "存在指定键的名称";
}else{
echo "不存在!!";
}
?>
相比较in_array函数而言,当我们知道需要查找的键名与键值时,在元素个数较多的数组中查找元素效率还是array_key_exist更高一些.
那么如果在二维数组中要查找指定的值的数组元素该怎样实现?
代码如下:
<?php
function ewsousuozhi ($ssarr, $onekey, $onestr){
if (count($ssarr)>0 && is_array($ssarr)){
foreach(array_keys($ssarr) as $ekey){
$lldb[$ekey] = $ssarr[$ekey][$onekey];
if ($lldb[$ekey] === $onestr){
$searcharray[$ekey] = $ssarr[$ekey];
}
}
}
return $searcharray;
}
$ssarr = array(array("a"=>"ww","b"=>"555"),array("a"=>"vvv","b"=>"eee"));
print_r(ewsousuozhi($ssarr,'a',"vvv"));
?>
输出结果是在二维数组$ssarr中,键名为a值为vvv的一维数组元素.
首先我们定义了一个函数,参数$ssarr代表二维数组,$onekey查询的键名,$onestr查询的键值,首先判断是数组以及数组元素个数不能为0, array_keys将数组$ssarr的键名返回为一个数组,通过foreach循环遍历键名
$lldb[$ekey] = $ssarr[$ekey][$onekey]; 将遍历出的一维数组中指定key键名的值存储为相同键名的临时一维数组$lldb[$ekey]中.
然后判断$lldb[$ekey]的值是否与需要查找的值相同,如果是则返回该二维数组的一维数组元素存储在$searcharray[$ekey]中.
整个过程中主要用到的遍历数组以及简单的判断值,就可以快速的在一个二维数组中查找到所需要的元素.
以上就是一些在php中查找数组的几种比较常用的方式,当然如果不是查找数组而是在一段文字中查找和高亮指定的单词还可以使用本站中的文字查找替换工具,它可以帮助我们快速的批量查找与替换字词.