当前位置:  首页>> 技术小册>> PHP8入门与项目实战(3)

数组是一个数据集合,能够在不同类型的数组和不同结构的数组内确定某个特定元素的存在是否是必要的。PHP提供in_array()、array_key_exists()、array_search()、array_keys()和array_values()函数,按照不同方式查询数组元素。

下面通过实例介绍如何查询数字索引数组和联合索引数组,两者都是一维数组。

【例6.13】

  1. <?php
  2. $roomtypes = array( '单床房','标准间','三床房','VIP套房');
  3. $prices_per_day = array('单床房'=> 298,'标准间'=> 268,'三床房'=> 198,'VIP套房'=>
  4. 368);
  5. if(in_array( '单床房',$roomtypes)){echo '单床房元素在数组$roomtypes中。<br/>';}
  6. if(array_key_exists( '单床房',$prices_per_day)){echo '键名为单床房的元素在数组
  7. $prices_per_day中。<br/>';}
  8. if(array_search( 268,$prices_per_day)){echo '值为268的元素在数组$prices_per_day中。
  9. <br/>';}
  10. $prices_per_day_keys = array_keys($prices_per_day);
  11. print_r($prices_per_day_keys);
  12. $prices_per_day_values = array_values($prices_per_day);
  13. print_r($prices_per_day_values);
  14. ?>

运行结果如图6-15所示。

【案例分析】

(1)数组$roomtypes为一个数字索引数组。in_array(‘单床房’,$roomtypes)判定元素’单床房’是否在数组$roomtypes中,如果在,就返回true。if语句得到返回值为真,以便打印表述。

(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()打印表述。

这几个函数只是针对一维数组,无法用于多维数组。它们在查询多维数组的时候,只会处理最外围的数组,其他内嵌的数组都作为数组元素处理,不会得到内嵌数组内的键值和元素值。