PHP 多维数组统计元素出现的次数
最近有一个好友询问我,如何统计数组里面元素出现的次数,数据来自数据库,别问我为什么不在数据库里面统计,现在要在 PHP 里面统计元素的个数。
最容易想到的就是遍历循环,然后判断值是否相等,然后统计 +1
,那就开始这么做:
原始的数组如下:
$s_arr = array(
array('area_code' => 853,'telephone_number' => 251654656),
array('area_code' => 65,'telephone_number' => 251654656),
array('area_code' => 853,'telephone_number' => 251654656),
array('area_code' => 54,'telephone_number' => 251654656),
array('area_code' => 853,'telephone_number' => 251654656),
array('area_code' => 548,'telephone_number' => 251654656),
array('area_code' => 853,'telephone_number' => 251654656),
array('area_code' => 65,'telephone_number' => 251654656),
array('area_code' => 853,'telephone_number' => 251654656),
array('area_code' => 54,'telephone_number' => 251654656),
array('area_code' => 853,'telephone_number' => 251654656),
array('area_code' => 65,'telephone_number' => 251654656),
array('area_code' => 853,'telephone_number' => 251654656),
array('area_code' => 54,'telephone_number' => 251654656),
array('area_code' => 853,'telephone_number' => 251654656),
array('area_code' => 548,'telephone_number' => 251654656),
array('area_code' => 853,'telephone_number' => 251654656),
array('area_code' => 65,'telephone_number' => 251654656),
array('area_code' => 853,'telephone_number' => 251654656),
array('area_code' => 54,'telephone_number' => 251654656),
);
上面的数组中,我们需要统计 area_code
的值出现的次数,首先我们定义一个临时的数组,用于统计每个元素出现的次数,因为我们可能并不知道 area_code
具体的值,然后遍历循环数组。
$tem_arr = array();
foreach($s_arr as $key1 => $s_arr_item){
if(empty($tem_arr)){
$tem_arr[] = array($s_arr_item['area_code'], 1);
}else{
$is_in_tem_arr = false;
foreach($tem_arr as $key => $tem_arr_item){
if($tem_arr_item[0] == $s_arr_item['area_code']){
$tem_arr[$key][1] = $tem_arr_item[1] + 1;
$is_in_tem_arr = true;
break;
}
}
if(!$is_in_tem_arr){
$tem_arr[] = array($s_arr_item['area_code'], 1);
}
}
}
先判断 $tem_arr
是否为空,也就是第一次循环的时候,如果为空,那么就直接添加元素,第二次循环开始,就要遍历临时数组 $tem_arr
,然后判断原数组中的 area_code
的值是否在临时数组中,如果在就将他的值 +1
,如果不在,就直接新添加一个元素。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论