排序多维数组,在PHP中按键合并
我有这个阵列:排序多维数组,在PHP中按键合并,php,multidimensional-array,merge,key,Php,Multidimensional Array,Merge,Key,我有这个阵列: Array ( [0] => Array ( [name] => Ben [matchedMovie] => Array ( [name] => Saw [genre] => Horror [patheMovie] => T
Array
(
[0] => Array
(
[name] => Ben
[matchedMovie] => Array
(
[name] => Saw
[genre] => Horror
[patheMovie] => Texas Chainsaw 3D
[patheMovieGenre] => Horror
[score] => 100.00
)
)
[1] => Array
(
[name] => Ben
[matchedMovie] => Array
(
[name] => Shooter
[genre] => Action, Thriller
[patheMovie] => The Shining
[patheMovieGenre] => Horror, Suspense/Thriller
[score] => 52.38
)
)
[2] => Array
(
[name] => Dick
[matchedMovie] => Array
(
[name] => Resident Evil Movie
[genre] => Action/Horror
[patheMovie] => Texas Chainsaw 3D
[patheMovieGenre] => Horror
[score] => 63.16
)
)
)
我想对它进行如下排序(不知道是否完全正确):
以便匹配的Movie数组使用相同的名称。
我该怎么做
我尝试过这个功能:
function group_by_key($array) {
$result = array();
foreach ($array as $sub) {
foreach ($sub as $k => $v) {
$result[$k][] = $v;
}
}
return $result;
}
但那是行不通的。只是快速尝试一下而已
function group_by_key($array){
$result = array();
foreach($array as $row){
if(!isset($result[$row['name']]){
$result[$row['name']] = array(
'name'=>$row['name'],
'matchedMovie'=>array($row['matchedMovie'])
);
} else {
$result[$row['name']]['matchedMovie'][] = $row['matchedMovie'];
}
}
return array_values($result);
}
所以你在标题中提到了排序,但在你的问题中没有提到。您是否也在尝试进行某种排序?我对这两个数组之间的差异有点困惑。也许你可以用文字概括你想要达到的目标。对不起,我的英语不是最好的。我会尽力解释的。正如您在第一个多维数组中看到的,有一个名称被两次提到。我想将第二个名字的匹配视频与第一个名字合并。因此,所有名称都是相同的,每个名称都是唯一的。如果要查看它们是否具有相同的“名称”值,则需要进行比较。除非使用“name”的值作为键,否则可以直接将它们设置为同一个键。
function group_by_key($array){
$result = array();
foreach($array as $row){
if(!isset($result[$row['name']]){
$result[$row['name']] = array(
'name'=>$row['name'],
'matchedMovie'=>array($row['matchedMovie'])
);
} else {
$result[$row['name']]['matchedMovie'][] = $row['matchedMovie'];
}
}
return array_values($result);
}