在线等 PHP将同一个多维数组中的某一个元素(该元素是数组)下的数据合并成一个元素

Array
(
[0] => Array
(
[count] => 3
[totalPages] => 1
[totalRows] => 3
[nowPage] => 1
[html] =>
[data] => Array
(
[0] => Array
(
[sid] => 35
[mid] => 150
[uid] => 1
[flag] => photo
[title] => 1
)

[1] => Array
(
[sid] => 18
[mid] => 150
[uid] => 1
[flag] => photo
[title] => 1
)

)

)

[1] => Array
(
[count] => 1
[totalPages] => 1
[totalRows] => 1
[nowPage] => 1
[html] =>
[data] => Array
(
[0] => Array
(
[sid] => 24
[mid] => 242
[uid] => 253
[flag] => blog
[title] => 博文第一条

)

)

)

)
《《《《《《《想要的结果》》》》

Array
(
[0] => Array
(
[count] => 4
[totalPages] => 1
[totalRows] => 3
[nowPage] => 1
[html] =>
[data] => Array
(
[0] => Array
(
[sid] => 35
[mid] => 150
[uid] => 1
[flag] => photo
[title] => 1
)

[1] => Array
(
[sid] => 18
[mid] => 150
[uid] => 1
[flag] => photo
[title] => 1
)
[2] => Array
(
[sid] => 24
[mid] => 242
[uid] => 253
[flag] => blog
[title] => 博文第一条
)

)
)

$ary = array(); //你的数组
$temp = array ();
//把想要的数组放到 $temp
foreach($ary as $key=>$val) {
if(is_array($val['data'])) {
foreach ($val['data'] as $k=>$v) {
$temp[] = $v;
}
}
}

最后一步,所收集到的数组放到第一个元素中

$ary[0]['data'] = $temp;

应该没有问题的吧。你试一下。如果不行。欢迎呼叫我。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-05-04
[totalPages] => 1
[totalRows] => 3
[nowPage] => 1
[html] =>
这四个值是拿第一个元素的吗?,不需要加?

不知道这样合并有什麽用。代码如下。

<?php
$a = array(
array(
'count'=>3,
'totalPages'=>1,
'totalRows'=>3,
'nowPage'=>1,
'html'=>'',
'data'=>array(
array(
'sid'=>35,
'mid'=>150,
'uid'=>1,
'flag'=>'photo',
'title'=>1
),
array(
'sid'=>18,
'mid'=>150,
'uid'=>1,
'flag'=>'photo',
'title'=>1
)
)
),
array(
'count'=>1,
'totalPages'=>1,
'totalRows'=>1,
'nowPage'=>1,
'html'=>'',
'data'=>array(
array(
'sid'=>24,
'mid'=>242,
'uid'=>253,
'flag'=>'blog',
'title'=> '博文第一条'
)
)
)
);

echo '原始数组<br>';
echo '<pre>';
print_r($a);
echo '</pre>';

$b = array();
$b[0]['totalPages'] = $a[0]['totalPages'];
$b[0]['totalRows'] = $a[0]['totalRows'];
$b[0]['nowPage'] = $a[0]['nowPage'];
$b[0]['html'] = $a[0]['html'];

foreach($a as $data){
$b[0]['count'] = isset($b[0]['count'])? $b[0]['count']+$data['count'] : $data['count'];
if(!isset($b[0]['data'])){
$b[0]['data'] = array();
}
foreach($data['data'] as $val){
array_push($b[0]['data'], $val);
}
}

echo '合并后';
echo '<pre>';
print_r($b);
echo '</pre>';
?>追问

'count'需要加
'totalPages'需要除以10取整{floor()系统函数取到的结果}
'totalRows'=>3,需要加
'nowPage'=>1,不需要加
'html'=>'',
另外 最外层的数组 元素个数不确定·····

第2个回答  2012-05-04
$arr = array(...你上边的数组...);
$newarr = array();
foreach ($arr as $k=>$v){
$newarr[0][$v['count']] = (isset($newarr[0][$v['count']]) ? $newarr[0][$v['count']]+$v['count'] : $v['count']);
...
$newarr[0][$v['data']] = (isset($newarr[0][$v['data']]) ? array_merge($newarr[0][$v['data']],$v['data']) : $v['data']);
}
var_dump($newarr);
手写伪代码,不保证正确,仅供思路参考本回答被网友采纳
相似回答