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

时间:2015-01-16 18:32:03

标签: php arrays sorting keyvaluepair

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

[
 ["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()似乎只能用于非配对)

如何将它们合并为上述内容?

1 个答案:

答案 0 :(得分:1)

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