我有一个数组数组,每个数组包含三个参数,如下所示:
Array
(
[0] => Array
(
[title] => 'games'
[transaction_id] => 102
[order_id]=> a
)
[1] => Array
(
[title] => 'media'
[transaction_id] => 95
[order_id]=> b
)
[2] => Array
(
[title] => 'tv'
[transaction_id] => 102
[order_id]=> a
)
[3] => Array
(
[title] => 'jane'
[transaction_id] => 42
[order_id]=> a
)
[4] => Array
(
[title] => 'ads'
[transaction_id] => 95
[order_id]=> b
)
[5] => Array
(
[title] => 'movie'
[transaction_id] => 95
[order_id]=> c
)
)
我想组织数组,使每个具有相同transaction_id
值和order_id
的数组都位于原始array(Multidimensional)
中的一个新数组下,如下所示:
Array
(
[0] => Array
(
[0] => games
[1] => tv
)
[1] => Array
(
[0] => jane
)
[2] => Array
(
[0] => ads
[1] => media
)
[3] => Array
(
[0] => movie
)
)
有什么好方法可以做到这一点?
我试过这个:
foreach ($conv_data as $obj) {
if (empty($result[$obj[1]])) {
$result[$obj[1]] = array($obj);
} else {
$result[$obj[1]][] = $obj;
}
}
但这只是一个参数的总和。
使用事务id和订单id作为结果数组键来"合并"重复:
在线演示
$source=/* source array */;
function merge(array $source)
{
$result=array();
foreach($source as $node)
{
$key=$node["transaction_id"]."_".$node["order_id"];
if(!empty($result[$key])) $result[$key][]=$node["title"];
else $result[$key]=array($node["title"]);
}
return array_values($result);
}
print_r(merge($source));
最终结果:
Array
(
[0] => Array
(
[0] => games
[1] => tv
)
[1] => Array
(
[0] => media
[1] => ads
)
[2] => Array
(
[0] => jane
)
[3] => Array
(
[0] => movie
)
)
您可以在退货前将uksort
发送到您想要的订单(如果您关心的话)。
$newarray = array();
foreach($arrays as $k=>$v){
$newarray['transaction_id'] = $v['transaction_id'];
$newarray['order_id'] = $v['order_id'];
$newmulti[] = $newarray;
}
echo '<pre>';
print_r($newmulti);
我希望它能帮助你