PHP的一些常用的处理数组的内置函数

这里整理了一些平常我使用较多的数组处理函数。PHP内置函数其实很多,大部分都很有用,对于数组这块,能使用内置函数来处理肯定是比自己写 效率高些的。

array_colum

array_column($array, $column_key, $index_key)用于返回输入数组中某个单一列的值,第三个参数可选。

 $a = [
        [
            'no'=>'001' ,
            'name'=>'amber',
            'class'=>'10'
        ],
        [
            'no'=>'002' ,
            'name'=>'suer',
            'class'=>'9'
        ],
        [
            'no'=>'003' ,
            'name'=>'ciky',
            'class'=>'8'
        ],
     ];
 dump(array_column($a,'name'));//取出name列
 dump(array_column($a,'name','no'));//将name拿出来,用相应no列作为键名

array_chunk()

array_chunk( $array, $length, $preserve_keys ) 把一个数组分割为新的数组块,按输入的length分组,最后一个可能小于这个数量。第三个参数为是否保留原来的键名,默认false,即不保留。

 $b = array('A', 'B', 'C', 'X', 'D', 'F', 'G', 'H', 'J');
 dump(array_chunk($b, 3));
 dump(array_chunk($b, 3, true));//保留原来键名

array_search() 与 in_array()

array_search() 函数与 in_array() 一样,在数组中查找一个键值(在一维数组范围内,多维数组可能需要使用递归)。输入参数相同:( $search, $array, $strict ),但返回值不同。array_search()找到返回匹配元素的键名,没找到则返回 false;in_array()找到返回true,否则返回false。第三个参数为是否严格匹配,默认false,即不严格匹配。

  $c = ['no'=>'001' , 'name'=>'amber', 'class'=>'10'];
  dump(in_array('amber', $c));
  dump(array_search('amber', $c));

array_combine()

array_combine( $keys_array, $values_array) 通过合并两个数组(一个为键名数组,一个为键值数组)来创建一个新数组,返回合并后的数组。如果作为keys的数组和作为values的数组的元素个数不一样,将会抛出一个警告错误(E_WARNING)。

 $a = array('green', 'red', 'yellow');
 $b = array('watermelon', 'apple', 'banana');
 $c = array_combine($a, $b);
 dump($c);

array_merge() 与 array_merge_recursive()

都是用于把一个或多个数组合并为一个数组。当输入一个数组时,他们返回结果相同,将返回带有整数键名的新数组,其键名以 0 开始进行重新索引。不同之处在于,输入两个或更多个数组元素时,如果有相同的键名,使用array_merge() 最后的元素会覆盖其他元素;array_merge_recursive() 不会进行键名覆盖,而是将多个相同键名的值递归组成一个数组。

 $a1=array("a"=>"red","b"=>"green");
 $a2=array("c"=>"blue","b"=>"yellow");
 dump(array_merge($a1,$a2));
 dump(array_merge_recursive($a1,$a2));

array_unique()

array_unique() 删除数组中重复的值,并返回结果数组。当几个数组元素的值相等时,只保留第一个元素,其他的元素被删除,返回的数组中键名不变。

 $a1 = array("apple", "banana", "pear", "apple", "wail", "watermalon");
 dump(array_unique($a1));
 $a2 = array("a"=>"red","b"=>"green","c"=>"red");
 dump(array_unique($a2));

array_key_exists()

array_key_exists($key, $array) 检查指定的键名是否存在于数组中。如果键名存在则返回 true,如果键名不存在则返回 false。

 $c = ['no'=>'001' , 'name'=>'amber', 'class'=>'10'];
 dump(array_key_exists('name', $c));

array_diff()

array_diff(array1,array2,array3…)比较数组(只比较键值),返回一个差集数组,该数组包括了所有在被比较的数组(array1)中,但是不在任何其他参数数组(array2 或 array3 等等)中的键值。

 $a1 = array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
 $a2 = array("a"=>"red","b"=>"black","h"=>"yellow");
 $a3 = array("e"=>"red","f"=>"black","g"=>"purple");
 $result1 = array_diff($a1,$a2);
 $result2 = array_diff($a1,$a2,$a3);
 dump($result1);
 dump($result2);

array_diff_key()

array_diff_key(array1,array2,array3…)比较数组(只比较键名),并返回一个差集数组,该数组包括了所有在被比较的数组(array1)中,但是不在任何其他参数数组(array2 或 array3 等等)中的键名。

  $a1 = array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
  $a2 = array("a"=>"red","b"=>"black","h"=>"yellow");
  $result = array_diff_key($a1,$a2);
  dump($result);

array_diff_assoc()

array_diff_assoc(array1,array2,array3…)比较数组(比较键名和键值),并返回一个差集数组,该数组包括了所有在被比较的数组(array1)中,但是不在任何其他参数数组(array2 或 array3 等等)中的键名和键值。

   $a1 = array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
   $a2 = array("e"=>"red","f"=>"black","g"=>"purple");
   $a3 = array("a"=>"red","f"=>"black","d"=>"yellow");
   $result = array_diff_assoc($a1,$a2,$a3);
   dump($result);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值