PHP 多维数组统计元素出现的次数 - 文章教程

PHP 多维数组统计元素出现的次数

发布于 2017-07-31 字数 3034 浏览 2245 评论 0

最近有一个好友询问我,如何统计数组里面元素出现的次数,数据来自数据库,别问我为什么不在数据库里面统计,现在要在 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 ,如果不在,就直接新添加一个元素。

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

目前还没有任何评论,快来抢沙发吧!

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

2583 文章
29 评论
84935 人气
更多

推荐作者

清风夜微凉

文章 1 评论 0

为你鎻心

文章 2 评论 0

xxhui

文章 0 评论 0

1PKOH46yx8j0x

文章 0 评论 0

Arthur

文章 0 评论 0