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

发布于 2017-07-31 10:49:12 字数 2755 浏览 2744 评论 0

最近有一个好友询问我,如何统计数组里面元素出现的次数,数据来自数据库,别问我为什么不在数据库里面统计,现在要在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

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

0 文章
0 评论
84961 人气
更多

推荐作者

巷子口的你

文章 0 评论 0

微信用户

文章 0 评论 0

神妖

文章 0 评论 0

7460852697

文章 0 评论 0

ligengkai

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文