我的数组是这样的:
$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