PHP

PHP 数组

Posted by Lysuu on April 16, 2020

PHP 统计数组中出现相同值的次数

array_count_values

array_count_values — 统计数组中所有的值 说明

array array_count_values ( array $input )

array_count_values() 返回一个数组: 数组的键是 input里单元的值; 数组的值是 input 单元的值出现的次数。

参数

1
input

需要统计的数组

返回值

返回一个关联数组,用 input 数组中的值作为键名,该值在数组中出现的次数作为值。

array_column

array_column — 返回数组中指定的一列

说明

array array_column ( array $input , mixed $column_key [, mixed $index_key = null ] )

array_column() 返回input数组中键值为column_key的列, 如果指定了可选参数index_key,那么input数组中的这一列的值将作为返回数组中对应值的键

参数

input

需要取出数组列的多维数组。 如果提供的是包含一组对象的数组,只有 public 属性会被直接取出。 为了也能取出 private 和 protected 属性,类必须实现 __get()__isset() 魔术方法。

1
column_key

需要返回值的列,它可以是索引数组的列索引,或者是关联数组的列的键,也可以是属性名。 也可以是NULL,此时将返回整个数组(配合index_key参数来重置数组键的时候,非常管用)

1
index_key

作为返回数组的索引/键的列,它可以是该列的整数索引,或者字符串键值。

返回值

从多维数组中返回单列数组。

  1. 一维数组

针对一维数组,直接使用array_count_values即可满足需求。

eg:

1
2
3
4
5
6
   $fruit = [
   'apple','orange','banana','banana','apple'
   ];
   
   $res = array_count_values($fruit);
   print_r($res);

输出:

1
2
3
4
5
6
Array
(
    [apple] => 2
    [orange] => 1
    [banana] => 2
)
  1. 二维数组(统计某一固定列中 相同值出现的次数)

    二位数组需要先使用array_column取出其中的某一列,然后再使用array_count_values统计次数。

    eg:统计人数

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    
    $user = [
    	[
    		'name' => '小华',
    		'sex' => '男',
    		'age' => 25
    	],
    	[
    		'name' => '晓华',
    		'sex' => '女',
    		'age' => 18
    	],
    	[
    		'name' => '小王',
    		'sex' => '男',
    		'age' => 20
    	],
    	[
    		'name' => '小莉',
    		'sex' => '女',
    		'age' => 18
    	],
    	[
    		'name' => '小明',
    		'sex' => '男',
    		'age' => 25
    	]
    ];
       
    $res = array_count_values(array_column($user, 'sex'));
    print_r($res);
    

    输出:

    1
    2
    3
    4
    5
    
    Array
    (
        [] => 3
        [] => 2
    )