比如这样的,我想将这个数组里面 m_id 相等数组元素再组合成一个新的数组:效果图如下:
12 个解决方案
#1
举例时要自圆其说,不然会产生误解
原始数据中并没有:
'sv_id' => 5, 'mid' => 0
'sv_id' => 9, 'mid' => 3
的项,结果中是如何出来的?
原始数据中并没有:
'sv_id' => 5, 'mid' => 0
'sv_id' => 9, 'mid' => 3
的项,结果中是如何出来的?
#2
额,是的,不过数据是可以随便改的啊,好好看看两张图的数组结构吧。。。
#3
这根结构没什么关系吧?
从算法角度上看:是如何产生不在原始数据中的项
从算法角度上看:是如何产生不在原始数据中的项
#4
<?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);
你复制运行一下看是不是你要的效果。
效果图:
#5
不考虑你多出的项目(我无法臆造)
$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
)
)
)
#6
哇,#5版主,,,为啥我想不到你写的方法呢。。你的好简洁。
#7
嗯,这个办法可以,谢啦, 不过下面的大神更恐怖,太简单了!!!
#8
太牛了!!!膜拜 谢谢!!
#9
额,是,sorry 我写错,少了一个下划线 m_id 写成了mid
#10
#11
#12
<?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);
你复制运行一下看是不是你要的效果。
效果图:
嗯,这个办法可以,谢啦, 不过下面的大神更恐怖,太简单了!!!
#1
举例时要自圆其说,不然会产生误解
原始数据中并没有:
'sv_id' => 5, 'mid' => 0
'sv_id' => 9, 'mid' => 3
的项,结果中是如何出来的?
原始数据中并没有:
'sv_id' => 5, 'mid' => 0
'sv_id' => 9, 'mid' => 3
的项,结果中是如何出来的?
#2
举例时要自圆其说,不然会产生误解
原始数据中并没有:
'sv_id' => 5, 'mid' => 0
'sv_id' => 9, 'mid' => 3
的项,结果中是如何出来的?
额,是的,不过数据是可以随便改的啊,好好看看两张图的数组结构吧。。。
#3
这根结构没什么关系吧?
从算法角度上看:是如何产生不在原始数据中的项
从算法角度上看:是如何产生不在原始数据中的项
#4
<?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);
你复制运行一下看是不是你要的效果。
效果图:
#5
不考虑你多出的项目(我无法臆造)
$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
)
)
)
#6
哇,#5版主,,,为啥我想不到你写的方法呢。。你的好简洁。
#7
<?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);
你复制运行一下看是不是你要的效果。
效果图:
嗯,这个办法可以,谢啦, 不过下面的大神更恐怖,太简单了!!!
#8
不考虑你多出的项目(我无法臆造)$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
)
)
)
太牛了!!!膜拜 谢谢!!
#9
这根结构没什么关系吧?
从算法角度上看:是如何产生不在原始数据中的项
额,是,sorry 我写错,少了一个下划线 m_id 写成了mid
#10
<?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);
你复制运行一下看是不是你要的效果。
效果图:
嗯,这个办法可以,谢啦, 不过下面的大神更恐怖,太简单了!!!
#11
#12
<?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);
你复制运行一下看是不是你要的效果。
效果图:
嗯,这个办法可以,谢啦, 不过下面的大神更恐怖,太简单了!!!