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。

posted on 2013-03-13 11:13  bgwan  阅读(1240)  评论(0编辑  收藏  举报

导航