前言 上一篇文章中我们了解了数组的写操作,也就是增删,但是在实际的开发中我们用的最多的还是读操作,也就是查询操作。数组是一个数据集合,能够在不同的类型数组和不同结构
前言
上一篇文章中我们了解了数组的写操作,也就是增删,但是在实际的开发中我们用的最多的还是读操作,也就是查询操作。数组是一个数据集合,能够在不同的类型数组和不同结构的数组内确定某个特定元素的存在是否是必需的。
PHP提供了一系列的操作函数,比如in_array()、array_key_exsits()、array_search()、array_keys()、array_values()等函数,可根据需求使用不同的方式查询素组的元素。
查询数组的指定元素
下面我们通过相关的实例进行了解他们的用法,看看普通的索引数组和键值对的关联数组怎么查询特定元素。代码如下:
<?php
$arr1 = array('张三','李四','王五','李白','杜甫','白居易');
//名字和年龄
$arr2 = array('张三'=>28,'李四'=>25,'王五'=>18,'李白'=>19,'杜甫'=>20,'白居易'=>21);
//查询数组中是否包含某个元素
if(in_array('李白', $arr1)){
echo '李白在数组$arr1中<br>';
}
if(array_key_exists('杜甫',$arr2)){
echo '键为杜甫的元素存在数组$arr2中<br>';
}
if(array_search(21, $arr2)){
echo '数组$arr2中有年龄为21的学生<br>';
}
//输出数组的键名
$arr2_key = array_keys($arr2);
echo '<pre>';
print_r($arr2_key);
//获取数组的所有值
$arr2_val = array_values($arr2);
echo '<pre>';
print_r($arr2_val);
?>
执行结果如下:
上面通过实例展示了查询相关的函数。
总结
- 数组$arr1为一个数字索引数组。in_array('李白',$arr1)判定元素'单床房'是否在数组$arr1中,如果在,就返回true。if语句得到返回值为真,然后打印相关描述。
- 数组$arr2为一个联合索引数组。array_key_exists('杜甫',$arr2)判定一个键值为'单床房'的元素是否在数组$arr2中,如果在,就返回true。if语句得到返回值为真,然后打印相关描述。array_key_exists()是专门针对关联数组的“键名”进行查询的函数。
- array_search()是专门针对联合数组的“元素值”进行查询的函数。同样针对$arr2这个联合数组进行操作。array_search(21,$arr2)判定一个元素值为21的元素是否在数组$arr2中,如果在,就返回true。if语句得到返回值为真,然后打印相关描述。
- 函数array_keys()用于取得数组“键值”,并把键值作为数组元素输出为一个数字索引数组的函数,主要用于联合索引数组。array_keys($arr2)获得数组$arr2的键值,并把它赋值给变量$arr2_key以构成一个数组。用print_r()打印数组。函数array_keys()虽然也可以取得数字索引数组的数字索引,但是这样做意义不大。
- 函数array_values()用于取得数组元素的“元素值”,并把元素值作为数组元素输出为一个数字索引数组的函数。array_values($arr2)获得数组$arr2的元素值,并把它赋值给变量$arr2_val构成一个数组。最后用print_r()输出$arr2_val。
这几个函数只是针对一维数组,无法用于多维数组。它们在查询多维数组的时候,只会处理最外围的数组,其他内嵌的数组都作为数组元素处理,不会得到内嵌数组内的键值和元素值。所以再对多维数组进行操作时,我们需要结合这些函数重新封装针对多维数组的操作的函数,特别是二维数组的操作,二维数组在开发中是最常见的数据格式,比如从数据获取到的数据。