php 统计二维数组中某个相等值的总个数,并且组合成一个新的数组

比如这样的,我想将这个数组里面m_id相等数组元素再组合成一个新的数组:效果图如下:... 比如这样的,我想将这个数组里面 m_id 相等数组元素再组合成一个新的数组:效果图如下: 展开
 我来答
浮华out
推荐于2016-01-29 · TA获得超过101个赞
知道小有建树答主
回答量:138
采纳率:0%
帮助的人:119万
展开全部
$arr = array(
    array('sv_id'=>1,'mid_id'=>1,'sv_question'=>20),
    array('sv_id'=>2,'mid_id'=>2,'sv_question'=>10),
    array('sv_id'=>3,'mid_id'=>1,'sv_question'=>20),
    array('sv_id'=>4,'mid_id'=>3,'sv_question'=>20),
    array('sv_id'=>5,'mid_id'=>2,'sv_question'=>20),
  );

foreach($arr as $k => $val){
    if(!isset($tmp[$val['mid_id']])){
        $tmp[$val['mid_id']][$val['sv_id']] = array( 'sv_id'=>$val['sv_id'], 'mid_id'=>$val['mid_id'], 'sv_question'=>$val['sv_question'], );
    }else{
        $tmp[$val['mid_id']][$val['sv_id']] = array( 'sv_id'=>$val['sv_id'], 'mid_id'=>$val['mid_id'], 'sv_question'=>$val['sv_question'], );
    }
}

print_r($tmp);
#效果是一样,但是不理解“计算sv_qustion的总和”是什么意思
追问
 $sum = array();

  foreach($tmp as $itme){
   foreach($itme as $i){
   $sum[$i['mid_id']]+= $i['sv_question'];
   }
  }
  最后输出:
Array
(
[1] => 40
[2] => 30
[3] => 20
)
试着做出来了,前面的多谢你啦!!!嘎嘎
bd200940
2013-09-13
知道答主
回答量:26
采纳率:0%
帮助的人:13.8万
展开全部
$arr = array(

  0=>array('sv_id'=>1,'mid_id'=>1,'sv_question'=>20),

  1=>array('sv_id'=>3,'mid_id'=>2,'sv_question'=>20),

  2=>array('sv_id'=>2,'mid_id'=>1,'sv_question'=>20)

  );

function countArr($arr)

{

   $arr2 = array();

   foreach($arr as $k=>$v)

   {

    foreach($v as $k2=>$v2)

    {

     if(!isset($arr2[$k2][$v2]))

     {

      $arr2[$k2][$v2] = 1;

     }

     else

     {

      ++$arr2[$k2][$v2];

     }

  

    }

   }

   return $arr2;

}

print_r(countArr($arr));
输出:
Array (
[sv_id] => Array ( [1] => 1 [3] => 1 [2] => 1 )
 [mid_id] => Array ( [1] => 2 [2] => 1 )
[sv_question] => Array ( [20] => 3 ) )
追问

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
luocongjay
2013-09-13 · TA获得超过949个赞
知道小有建树答主
回答量:1382
采纳率:33%
帮助的人:438万
展开全部
$temp=array();
foreach(){
if(){
$temp=

}
}

大概就这样吧!
追问
可是,if 里面的条件怎么判断呀
追答
  $arr = array(
 
  0=>array('sv_id'=>1,'m_id'=>1,'sv_question'=>20),
 
  1=>array('sv_id'=>3,'m_id'=>2,'sv_question'=>20),
 
  2=>array('sv_id'=>2,'m_id'=>1,'sv_question'=>20),

  3=>array('sv_id'=>4,'m_id'=>3,'sv_question'=>20),

  4=>array('sv_id'=>5,'m_id'=>2,'sv_question'=>20)
 
  );
  
  function countArr($arr){
 $temp=array();
 foreach($arr as $k=>$v){
$temp[$v['m_id']][$v['sv_id']]=$v;
 }
 return $temp;
  }
  
  print_r(countArr($arr));
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式