如果两对具有相同的值,则将两对合并到同一个数组中

Merge two pairs in the same array if the pairs have the same value

我有以下几对,它们在同一个数组中:

[
 ["ID" => 0, "User" => "Test" , "Type" => 3, "Target" => "Caris"],
 ["ID" => 1, "User" => "Test1", "Type" => 3, "Target" => "Caris"],
 ["ID" => 2, "User" => "Test2", "Type" => 4, "Target" => "Shirone"],
 ["ID" => 3, "User" => "Test3", "Type" => 3, "Target" => "Caris"]
]

我想得到它们的种类,所以我使用了下面的代码:

$SortList = [];

foreach($Notif as $Key => $Value)
            array_push($SortList, ['Type'   => $Value['Type'], 
                                   'Target' => $Value['Target']]);

得到这个:

[
 ["Type" => 3, "Target" => "Caris"], 
 ["Type" => 3, "Target" => "Caris"], 
 ["Type" => 4, "Target" => "Shirone"],
 ["Type" => 3, "Target" => "Caris"]
]

但我真正想要的是这样的:

[
 ["Type" => 3, "Target" => "Caris"], 
 ["Type" => 4, "Target" => "Shirone"]
]

如果它们的值相同,我想合并它们,

(array_merge()好像只能用于非对)

如何像上面那样合并它们?

$SortList = [];
foreach($Notif as $Key => $Value) {
    // Just save only value for the same pair, use them concatenated as the key
    $SortList[$Value['Type']."_".$Value['Target']] =
      array('Type' => $Value['Type'], 'Target' => $Value['Target']);
}
// remove extra stuff (the keys) that was added to prevent duplicates
$SortList = array_values($SortList);