Объединить две пары в одном массиве, если пары имеют одинаковое значение

У меня есть следующие пары, и они находятся в одном массиве:

[
["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() кажется, может использоваться только для не-пары)

Как я могу объединить их, как что-то выше?

0

Решение

$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);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]