检查PHP数组中的键/值是否重复


check php array for key/value duplicates

我的数组是这样的:

   $sth = array(
        array("group" => "1", "name" => "John", "whatever" => "a"),
        array("group" => "1", "name" => "John", "whatever" => "b"), // this is the duplicate I want to remove
        array("group" => "1", "name" => "Henry", "whatever" => "c"),
        array("group" => "2", "name" => "John", "whatever" => "d"),
        array("group" => "2", "name" => "Peter", "whatever" => "e")
    )

我想删除重复的1/John条目,但不删除2/John,因为它不是重复的。我只想检查这两个值,而不是"whatever"值,因为它们总是不同的。我知道我可以使用in_array来搜索"John",或array_search来检查键,但键并不总是与名称相关,所以我只需要删除key/value完全相同的重复项。我想这样写:

$cleaned_sth = array();
foreach($sth as $s) {
    $group = $s[0];
    $name = $s[1];
    if( in_array($group => $name, $cleaned_sth ) continue;
    else $cleaned_sth[] = array("group" => $group, "name" => $name);
}

下面是一段伪代码(因为我已经很长时间不用PHP编程了)

define an empty map
foreach(entry in array) map[entry["group"] + entry["name"]] = entry
map.values