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

大星喵喵 2013-09-13 11:50:58

比如这样的,我想将这个数组里面 m_id 相等数组元素再组合成一个新的数组:效果图如下:


...全文
1337 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
大星喵喵 2013-09-23
  • 打赏
  • 举报
回复
引用 10 楼 u012003258 的回复:
[quote=引用 7 楼 hiemma1001 的回复:] [quote=引用 4 楼 u012003258 的回复:]
<?php 
$arr=array(
		array(
				'sv_id'=>1,
				'm_id'=>1,
				'sv_question1'=>20	
			),	
		array(
				'sv_id'=>2,
				'm_id'=>2,
				'sv_question1'=>10
		),
		array(
				'sv_id'=>3,
				'm_id'=>1,
				'sv_question1'=>20
		),
		array(
				'sv_id'=>4,
				'm_id'=>3,
				'sv_question1'=>20
		),
		array(
				'sv_id'=>5,
				'm_id'=>2,
				'sv_question1'=>10
		)
	);

//var_dump($arr);
$ar=array();
foreach($arr as $v){
		if(empty($ar) || !in_array($v,$ar)){
			$ar[$v['m_id']][$v['sv_id']]=$v;
		}else{
			foreach($ar as $ka=>$va){
				if($ka==$v['m_id']){
					$ar[$ka][$v['sv_id']]=$v;
				}
			}
		}
}
echo "<pre>";
var_dump($ar);
你复制运行一下看是不是你要的效果。 效果图:
嗯,这个办法可以,谢啦, 不过下面的大神更恐怖,太简单了!!![/quote][/quote]
xuzuning 2013-09-13
  • 打赏
  • 举报
回复
举例时要自圆其说,不然会产生误解 原始数据中并没有: 'sv_id' => 5, 'mid' => 0 'sv_id' => 9, 'mid' => 3 的项,结果中是如何出来的?
C-S-D-N-斌仔 2013-09-13
  • 打赏
  • 举报
回复
引用 7 楼 hiemma1001 的回复:
[quote=引用 4 楼 u012003258 的回复:]
<?php 
$arr=array(
		array(
				'sv_id'=>1,
				'm_id'=>1,
				'sv_question1'=>20	
			),	
		array(
				'sv_id'=>2,
				'm_id'=>2,
				'sv_question1'=>10
		),
		array(
				'sv_id'=>3,
				'm_id'=>1,
				'sv_question1'=>20
		),
		array(
				'sv_id'=>4,
				'm_id'=>3,
				'sv_question1'=>20
		),
		array(
				'sv_id'=>5,
				'm_id'=>2,
				'sv_question1'=>10
		)
	);

//var_dump($arr);
$ar=array();
foreach($arr as $v){
		if(empty($ar) || !in_array($v,$ar)){
			$ar[$v['m_id']][$v['sv_id']]=$v;
		}else{
			foreach($ar as $ka=>$va){
				if($ka==$v['m_id']){
					$ar[$ka][$v['sv_id']]=$v;
				}
			}
		}
}
echo "<pre>";
var_dump($ar);
你复制运行一下看是不是你要的效果。 效果图:
嗯,这个办法可以,谢啦, 不过下面的大神更恐怖,太简单了!!![/quote]
大星喵喵 2013-09-13
  • 打赏
  • 举报
回复
引用 3 楼 xuzuning 的回复:
这根结构没什么关系吧? 从算法角度上看:是如何产生不在原始数据中的项
额,是,sorry 我写错,少了一个下划线 m_id 写成了mid
大星喵喵 2013-09-13
  • 打赏
  • 举报
回复
引用 5 楼 xuzuning 的回复:
不考虑你多出的项目(我无法臆造)
$ar = array(
  array( 'sv_id' => 1, 'mid' => 1, 'sv_question1' => 20 ),
  array( 'sv_id' => 2, 'mid' => 2, 'sv_question1' => 10 ),
  array( 'sv_id' => 3, 'mid' => 1, 'sv_question1' => 20 ),
  array( 'sv_id' => 4, 'mid' => 3, 'sv_question1' => 20 ),
  array( 'sv_id' => 5, 'mid' => 2, 'sv_question1' => 20 ),
);
$res = array();

foreach($ar as $item) {
  $res[$item['mid']][$item['sv_id']] = $item;
}
print_r($res);
Array
(
    [1] => Array
        (
            [1] => Array
                (
                    [sv_id] => 1
                    [mid] => 1
                    [sv_question1] => 20
                )

            [3] => Array
                (
                    [sv_id] => 3
                    [mid] => 1
                    [sv_question1] => 20
                )

        )

    [2] => Array
        (
            [2] => Array
                (
                    [sv_id] => 2
                    [mid] => 2
                    [sv_question1] => 10
                )

            [5] => Array
                (
                    [sv_id] => 5
                    [mid] => 2
                    [sv_question1] => 20
                )

        )

    [3] => Array
        (
            [4] => Array
                (
                    [sv_id] => 4
                    [mid] => 3
                    [sv_question1] => 20
                )

        )

)

太牛了!!!膜拜 谢谢!!
大星喵喵 2013-09-13
  • 打赏
  • 举报
回复
引用 4 楼 u012003258 的回复:
<?php 
$arr=array(
		array(
				'sv_id'=>1,
				'm_id'=>1,
				'sv_question1'=>20	
			),	
		array(
				'sv_id'=>2,
				'm_id'=>2,
				'sv_question1'=>10
		),
		array(
				'sv_id'=>3,
				'm_id'=>1,
				'sv_question1'=>20
		),
		array(
				'sv_id'=>4,
				'm_id'=>3,
				'sv_question1'=>20
		),
		array(
				'sv_id'=>5,
				'm_id'=>2,
				'sv_question1'=>10
		)
	);

//var_dump($arr);
$ar=array();
foreach($arr as $v){
		if(empty($ar) || !in_array($v,$ar)){
			$ar[$v['m_id']][$v['sv_id']]=$v;
		}else{
			foreach($ar as $ka=>$va){
				if($ka==$v['m_id']){
					$ar[$ka][$v['sv_id']]=$v;
				}
			}
		}
}
echo "<pre>";
var_dump($ar);
你复制运行一下看是不是你要的效果。 效果图:
嗯,这个办法可以,谢啦, 不过下面的大神更恐怖,太简单了!!!
C-S-D-N-斌仔 2013-09-13
  • 打赏
  • 举报
回复
哇,#5版主,,,为啥我想不到你写的方法呢。。你的好简洁。
xuzuning 2013-09-13
  • 打赏
  • 举报
回复
不考虑你多出的项目(我无法臆造)
$ar = array(
  array( 'sv_id' => 1, 'mid' => 1, 'sv_question1' => 20 ),
  array( 'sv_id' => 2, 'mid' => 2, 'sv_question1' => 10 ),
  array( 'sv_id' => 3, 'mid' => 1, 'sv_question1' => 20 ),
  array( 'sv_id' => 4, 'mid' => 3, 'sv_question1' => 20 ),
  array( 'sv_id' => 5, 'mid' => 2, 'sv_question1' => 20 ),
);
$res = array();

foreach($ar as $item) {
  $res[$item['mid']][$item['sv_id']] = $item;
}
print_r($res);
Array
(
    [1] => Array
        (
            [1] => Array
                (
                    [sv_id] => 1
                    [mid] => 1
                    [sv_question1] => 20
                )

            [3] => Array
                (
                    [sv_id] => 3
                    [mid] => 1
                    [sv_question1] => 20
                )

        )

    [2] => Array
        (
            [2] => Array
                (
                    [sv_id] => 2
                    [mid] => 2
                    [sv_question1] => 10
                )

            [5] => Array
                (
                    [sv_id] => 5
                    [mid] => 2
                    [sv_question1] => 20
                )

        )

    [3] => Array
        (
            [4] => Array
                (
                    [sv_id] => 4
                    [mid] => 3
                    [sv_question1] => 20
                )

        )

)

C-S-D-N-斌仔 2013-09-13
  • 打赏
  • 举报
回复
<?php 
$arr=array(
array(
'sv_id'=>1,
'm_id'=>1,
'sv_question1'=>20
),
array(
'sv_id'=>2,
'm_id'=>2,
'sv_question1'=>10
),
array(
'sv_id'=>3,
'm_id'=>1,
'sv_question1'=>20
),
array(
'sv_id'=>4,
'm_id'=>3,
'sv_question1'=>20
),
array(
'sv_id'=>5,
'm_id'=>2,
'sv_question1'=>10
)
);

//var_dump($arr);
$ar=array();
foreach($arr as $v){
if(empty($ar) || !in_array($v,$ar)){
$ar[$v['m_id']][$v['sv_id']]=$v;
}else{
foreach($ar as $ka=>$va){
if($ka==$v['m_id']){
$ar[$ka][$v['sv_id']]=$v;
}
}
}
}
echo "<pre>";
var_dump($ar);

你复制运行一下看是不是你要的效果。
效果图:



xuzuning 2013-09-13
  • 打赏
  • 举报
回复
这根结构没什么关系吧? 从算法角度上看:是如何产生不在原始数据中的项
大星喵喵 2013-09-13
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
举例时要自圆其说,不然会产生误解 原始数据中并没有: 'sv_id' => 5, 'mid' => 0 'sv_id' => 9, 'mid' => 3 的项,结果中是如何出来的?
额,是的,不过数据是可以随便改的啊,好好看看两张图的数组结构吧。。。

21,891

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧