php数组分组

很多时候我们需要对一个数组进行分类,例如从数据库里取出N条记录,然后要把它们分为好几类。数据库的sql语句好像没这个功能。
 
最理想的是在这些记录数组外面再分一层数组,这个上层数组的键名就是分类名。既然不能直接从sql语句中实现效果,我们只要从处理数组下手。
 
看下面例子:
       $arr = array(
            array('countyid' => 1, 'county' => '中国', 'province' => '湖南'),
            array('countyid' => 1, 'county' => '中国', 'province' => '湖南'),
            array('countyid' => 3, 'county' => '日本', 'province' => '名古屋'),
            array('countyid' => 3, 'county' => '日本', 'province' => '东京'),
            array('countyid' => 1, 'county' => '中国', 'province' => '北京'),
            array('countyid' => 1, 'county' => '中国', 'province' => '山东'),
            array('countyid' => 1, 'county' => '中国', 'province' => '山东'),
            array('countyid' => 2, 'county' => '美国', 'province' => '安大略'),
            array('countyid' => 2, 'county' => '美国', 'province' => '安大略'),
            array('countyid' => 3, 'county' => '日本', 'province' => '名古屋'),
        );
     
     现在我们的需求是按国家分类,形成以下数组:
     $newArr = array(
          ‘中国’ => array(
               0 =>  array('countyid' => 1, 'county' => '中国', 'province' => '湖南'),
               1 =>  array('countyid' => 1, 'county' => '中国', 'province' => '湖南'),
               ....
          ),
          ‘日本’ => array(
               0 => array('countyid' => 3, 'county' => '日本', 'province' => '名古屋'),
               1 => array('countyid' => 3, 'county' => '日本', 'province' => '东京'),
          ),
     )
 
     思路如下:遍历,构建新数组。
        $newArr = array();
        foreach($arr as $v) {
            $newArr[$v['county']][] = $v;
        }
      
 
        或者我们可以做统计:
         $newArr = array(
          ‘中国’ => 5,
          ‘日本’ => 6,
          )
 
        $newArr = array();
        foreach($arr as $v) {
            $newArr[$v['county']]++;
        }
        
 
注意,第二个方法(++的那个)会爆出notice。

转载于:https://www.cnblogs.com/bgwan/archive/2013/03/13/2957250.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值