PHP查询数组元素的5种方法(附带实例)
数组是一个数据集合,能够在不同类型的数组和不同结构的数组内确定某个特定元素的存在与否是必要的。
PHP 提供 in_array()、array_key_exists()、array_search()、array_keys() 和 array_values() 函数,按照不同方式查询数组元素。
下面通过实例介绍如何查询数字索引数组和联合索引数组,两者都是一维数组。
2) 数组 $prices_per_day 为一个联合索引数组。array_key_exists('单床房',$prices_per_day) 判定一个键值为 '单床房' 的元素是否在数组 $prices_per_day 中,如果在,就返回 true。if 语句得到返回值为真,便打印表述。array_key_exists() 是专门针对联合数组的“键名”进行查询的函数。
3) array_search() 是专门针对联合数组的“元素值”进行查询的函数。同样针对 $prices_per_day 这个联合数组进行操作。array_search(268,$prices_per_day) 判定一个元素值为 268 的元素是否在数组 $prices_per_day 中,如果在,就返回 true。if 语句得到返回值为真,以便打印表述。
4) 函数 array_keys() 用于取得数组“键值”,并把键值作为数组元素输出为一个数字索引数组的函数,主要用于联合索引数组。array_keys($prices_per_day) 获得数组 $prices_per_day 的键值,并把它赋值给变量 $prices_per_day_keys 以构成一个数组。用 print_r() 打印表述。函数 array_keys() 虽然也可以取得数字索引数组的数字索引,但是这样做意义不大。
5) 函数 array_values() 用于取得数组元素的“元素值”,并把元素值作为数组元素输出为一个数字索引数组的函数。array_values($prices_per_day) 获得数组 $prices_per_day 的元素值,并把它赋值给变量 $prices_per_day_values 构成一个数组。最后用 print_r() 打印表述。
这几个函数只是针对一维数组,无法用于多维数组。它们在查询多维数组的时候,只会处理最外围的数组,其他内嵌的数组都作为数组元素处理,不会得到内嵌数组内的键值和元素值。
PHP 提供 in_array()、array_key_exists()、array_search()、array_keys() 和 array_values() 函数,按照不同方式查询数组元素。
下面通过实例介绍如何查询数字索引数组和联合索引数组,两者都是一维数组。
<?php $roomtypes = array('单床房', '标准间', '三床房', 'VIP套房'); $prices_per_day = array( '单床房' => 298, '标准间' => 268, '三床房' => 198, 'VIP套房' => 368 ); if (in_array('单床房', $roomtypes)) { echo '单床房元素在数组$roomtypes中。<br/>'; } if (array_key_exists('单床房', $prices_per_day)) { echo '键名为单床房的元素在数组$prices_per_day中。<br/>'; } if (array_search(268, $prices_per_day) !== false) { echo '值为268的元素在数组$prices_per_day中。<br/>'; } $prices_per_day_keys = array_keys($prices_per_day); print_r($prices_per_day_keys); $prices_per_day_values = array_values($prices_per_day); print_r($prices_per_day_values); ?>运行结果为:
单床房元素在数组$roomtypes中。
键名为单床房的元素在数组$prices_per_day中。
值为268的元素在数组$prices_per_day中。
Array
(
[0] => 单床房
[1] => 标准间
[2] => 三床房
[3] => VIP套房
)
Array
(
[0] => 298
[1] => 268
[2] => 198
[3] => 368
)
2) 数组 $prices_per_day 为一个联合索引数组。array_key_exists('单床房',$prices_per_day) 判定一个键值为 '单床房' 的元素是否在数组 $prices_per_day 中,如果在,就返回 true。if 语句得到返回值为真,便打印表述。array_key_exists() 是专门针对联合数组的“键名”进行查询的函数。
3) array_search() 是专门针对联合数组的“元素值”进行查询的函数。同样针对 $prices_per_day 这个联合数组进行操作。array_search(268,$prices_per_day) 判定一个元素值为 268 的元素是否在数组 $prices_per_day 中,如果在,就返回 true。if 语句得到返回值为真,以便打印表述。
4) 函数 array_keys() 用于取得数组“键值”,并把键值作为数组元素输出为一个数字索引数组的函数,主要用于联合索引数组。array_keys($prices_per_day) 获得数组 $prices_per_day 的键值,并把它赋值给变量 $prices_per_day_keys 以构成一个数组。用 print_r() 打印表述。函数 array_keys() 虽然也可以取得数字索引数组的数字索引,但是这样做意义不大。
5) 函数 array_values() 用于取得数组元素的“元素值”,并把元素值作为数组元素输出为一个数字索引数组的函数。array_values($prices_per_day) 获得数组 $prices_per_day 的元素值,并把它赋值给变量 $prices_per_day_values 构成一个数组。最后用 print_r() 打印表述。
这几个函数只是针对一维数组,无法用于多维数组。它们在查询多维数组的时候,只会处理最外围的数组,其他内嵌的数组都作为数组元素处理,不会得到内嵌数组内的键值和元素值。