计算另一个数组中的数组键数据

时间:2019-04-03 10:31:47

标签: php arrays

我正在尝试获取关键数据的数量并将其汇总并显示。我需要对php数组中的所有关键数据进行计数,并显示如下所示的输出,但我无法获得所有的数组计数。

Output:
 chromi: 7
 detruch: 6
 detroy: 4

找到下面的数组图片,这就是我获取数组数据的方式 enter image description here

3 个答案:

答案 0 :(得分:2)

更好的方法是获取值数组并使用 array-count-values

$array = [
        ['someKey' => 'Value 1'],
        ['someKey1' => 'Value 1'],
        ['someKey2' => 'Value 2'],
        ['someKey3' => 'Value 3'],
    ];

$arr = array_map(function ($e) {return reset($e);},$array);
print_r(array_count_values($arr));

输出将是:

Array
(
    [Value 1] => 2
    [Value 2] => 1
    [Value 3] => 1
)

我只是改善@Qirel的答案。此版本可以支持多值计数。现场演示:3v4l

答案 1 :(得分:1)

环绕数组,使用reset()选择第一个值,然后计算$result数组的索引。

$array = [
        ['someKey' => 'Value 1'],
        ['someKey1' => 'Value 1'],
        ['someKey2' => 'Value 2'],
        ['someKey3' => 'Value 3'],
    ];

$result = [];

foreach ($array as $v) {
    $value = reset($v);
    if (!isset($result[$value]))
        $result[$value] = 0;

    $result[$value] += 1;
}
print_r($result);

答案 2 :(得分:0)

首先用值翻转键,然后循环数组以增加计数器:

尝试以下代码段:

$chromi = 0 ;
$detruch = 0 ;
$detroy = 0;
$data = array_flip($data);
foreach($data as $key=>$value){
      if($key=='chromi'){
        $chromi++;
      }
      else if ($key=='chromi'){
      $chromi++
       }
        else if ($key=='detroy'){
      $detroy++
       }
}