[英]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
)
如评论中所述,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.