[0] => Array
(
[feature code] => PPL
[country code] => ES
[admin1code] => 51
[admin2code] => H
[name] => Zalamea la Real
[asciiname] => Zalamea la Real
[id] => 108164
)
[1] => Array
(
[feature code] => PPLA3
[country code] => ES
[admin1code] => 51
[admin2code] => H
[name] => Zalamea la Real
[asciiname] => Zalamea la Real
[id] => 108188
)
My array has similar duplicates where name value is a duplicate one rest not.
How to unset all duplicate but leave one?
You can try:
$repeating = [];
foreach ($data as $key => $value) {
if(in_array($value['name'], $repeating)) {
unset($data[$key]['name']);
}
else {
$repeating[] = $value['name'];
}
}