根据键值删除重复值?

[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'];
       }
 }