PHP数组操作之匹配搜索数组中的元素和键名

来自:互联网
时间:2021-11-05
阅读:

在之前的文章中我们了解了可以通过strcmp()函数 和 strcasecmp() 函数来进行字符串的比较,字符串是PHP中的重要数据类型之一,PHP开发过程中还有很重要的数据类型就是数组,我们了解了可以对字符串进行比较、定位和替换等等的操作,那么对于同样重要的数组我们有什么常用的操作吗?

在之前的文章我们讲到了怎样去搜索定位字符串与数组中的元素,其中讲到可以通过preg_grep()函数来对数组元素进行定位搜索,下面我们就来看一下更多的方法去查找和搜索数组中的元素。

in_array()函数-匹配数组元素返回布尔

在PHP中我们可以通过in_array()函数来对数组中的元素进行搜索,in_array()函数的基本语法格式如下:

in_array(search,array,type)

其中需要注意的是:参数search表示的是我们需要在数组中搜索的值,参数array表示的是我们需要进行搜索的数组,参数type是一个可选参数,如果参数的取值是true的话,在搜索的时候就会检查搜索的数据和所搜索的数组数据类型是否形同。

如果在数组中找到了我们需要搜的的值,函数返回的结果就是true;如果没有在数组中找到我们需要搜索到的值,返回的结果就是false

接下来我们通过简单的示例来看一下PHP中in_array()函数的应用,示例如下:

<?php
$people = array("Bill", "bob", "Mark", "coc");
if (in_array("23", $people, TRUE))
  {
  echo "在数组中";
  }
else
  {
  echo "不在数组中";
  }
  echo '<br/>';
if (in_array("Mark",$people, TRUE))
  {
  echo "在数组中";
  }
else
  {
  echo "不在数组中";
  }
  echo '<br/>';
if (in_array("bill",$people, TRUE))
  {
  echo "在数组中";
  }
else
  {
  echo "不在数组中";
  }
?>

输出结果:

PHP数组操作之匹配搜索数组中的元素和键名

在上述示例中,我们第三次匹配搜索的时候,我们是用来小写,并没有匹配成功,其中需要注意的是如果我们需要搜索的内容是个字符串的话,并且参数type的设置为true,那么进行搜索的时候就会区分大小写。

array_search() 函数-匹配数组元素返回键名

上文中的in_array函数知识单纯地搜索判断数组中有没有我们需要进行找的元素,还没办法进行定位,想要准确的进行定位找到的话呢,在PHP中我们可以通过array_search() 函数,该函数可以搜索元素,返回的结果是我们搜索元素的键名。

array_search()函数的基本语法格式如下:

array_search(value,array,strict)

其中需要进行注意的是:参数value是我们需要进行搜索的键值,参数array就是我们需要进行搜索的数组,参数strict是一个可选参数,该参数默认情况下是flase,如果参数设置为true的话,在搜索的时候就会检查搜索的数据和所搜索的数组数据类型是否形同。

如果在数组中搜索到了对应的键值,返回的结果就是这个键值对应的键名;如果没有匹配到的话,返回的结果就是flase;其中需要注意一下,如果匹配到的键值不止一个,这时候返回的结果就是第一次匹配到键值的键名。

下面我们通过示例来看一下array_search函数的使用,示例如下:

<?php
$a=array("a"=>"5","b"=>5,"c"=>"5");
echo array_search(5,$a,true) . '<br/>';
$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');
echo array_search('green',$array,true);
?>

输出结果:

PHP数组操作之匹配搜索数组中的元素和键名

其中需要注意的是,当参数设置为true的时候,在数组进行搜索匹配的时候,不同的数据形式搜索的结果是不同的。

array_key_exists()函数-匹配数组键名返回布尔

在上文中我们通过array_search函数能够通过搜索键值输出搜索元素的键名,在PHP中也可以直接搜索键名。那就是通过PHP中的array_key_exists函数。

array_key_exists函数的基本语法格式如下:

array_key_exists(key,array)

其中需要注意的是:参数key表示的就是我们需要所搜的键名,参数array标识的就是我们需要进行搜索的数组,

通过array_key_exists函数只能够判断一维数组中的键名不能判断多维数组中数组内的键名,如果在数组中匹配到了指定的键名,该函数返回的结果就是true,如果数组中没有匹配到。返回的结果就是flase。

下面我们通过示例来看一下array_key_exists函数的使用,示例如下:

<?php
$people = array("Bill", "a"=>"bob", "Mark", "coc");
if (array_key_exists(0, $people,))
  {
  echo "键名存在";
  }
else
  {
  echo "键名不存在";
  }
  echo '<br/>';
if (array_key_exists("a",$people,))
  {
  echo "键名存在";
  }
else
  {
  echo "键名不存在";
  }
  echo '<br/>';
if (array_key_exists("coc",$people,))
  {
  echo "键名存在";
  }
else
  {
  echo "键名不存在";
  }
?>

输出结果:

PHP数组操作之匹配搜索数组中的元素和键名

由此我们便通过array_key_exists来进行在一个数组中找到一个指定的键。

返回顶部
顶部