繁体   English   中英

计算数组中每个元素出现的次数(在 php 中)

[英]count the number of occurrence of each element in an array (in php)

我想要数组中每个元素的出现次数。 注意:我不能使用像 array_count_values() 这样的内置函数

这是我试过的。

$a = ['a','b','a','c','a','d'];

$output = [];

for ($i = 0; $i <= count($a);$ i++) {
    $count = 1;
    for($j = $i + 1; $j < count($a); $j++) {
        if ($a[$i] == $a[$j]) {
            $count++;
            $output[$a[$i]] = $count;
        }
    }
}

print_r($output);

在 PHP7 中,您可以使用NULL 合并运算符来简化此代码:

$a=['a','b','a','c','a','d'];

$output=[];

foreach ($a as $v) {
    $output[$v] = ($output[$v] ?? 0) + 1;
}

print_r($output);

输出:

Array
(
    [a] => 3
    [b] => 1
    [c] => 1
    [d] => 1
)

3v4l.org 上的演示

如评论中所述,array_count_values() 是 php 中的最佳解决方案。 但是你必须把它写出来,也就是展示你对如何搜索数组的理解,它也相当简单。

$a=['a','b','a','c','a','d'];
$output=[]; 

for($i = 0; $i < count($a); $i++){
    if(!isset($output[$a[$i]])){
      $output[$a[$i]] = 1;
    }

    else{
        $output[$a[$i]] = $output[$a[$i]] + 1;
    }
}

var_dump($output);

//output
array(4) {
  ["a"] => int(3)
  ["b"] => int(1)
  ["c"] => int(1)
  ["d"] => int(1)
}
<?php
$items=['a','b','a','c','a','d'];

foreach($items as $item) {
    $result[$item] ??= 0;
    $result[$item]  += 1;
}

var_dump($result);

输出:

array(4) {
  ["a"]=>
  int(3)
  ["b"]=>
  int(1)
  ["c"]=>
  int(1)
  ["d"]=>
  int(1)
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM