======[PHP] array_unique_by_subitem()======
Ein Array_unique anhand eines Subitems. zB. Bei einem 2-Dimensionalen Array der eine Tabelle darstellt alle mit einer Unique-Indexfeld erstellen
=====Funktion=====
/**
* array_unique über ein Element eines Array
* mpl by ERB software
* http://wiki.yaslaw.info/dokuwiki/doku.php/php/functions/array/arrayuniquebysubitem
* @author stefan.erb(at)erb-software.com
* @param Array Array> Ein mehrstufiger Array
* @param String Key im Array der unique sein soll (key oder index)
* @param Integer SORT_REGULAR, SORT_STRING, SORT_NUMERIC. Siehe sort_flags-Parameter von array_unique
*/
* @return Array Array>
*/
function array_unique_by_subitem($array, $key, $sort_flags = SORT_STRING){
$items = array();
// Die Subeitems auslesen
foreach($array as $index => $item) $items[$index] = $item[$key];
//Die Subitems mit array_unique beabreiben
$uniqueItems = array_unique($items, $sort_flags);
//Der eigentliche Array über den Key mit den selektierten Subitems abgleichen
return array_intersect_key($array, $uniqueItems);
}
=====Beispiele=====
====Array ohne Schlüssel====
$data[] = array('Volvo', 'blau');
$data[] = array('Volvo', 'grün');
$data[] = array('VW', 'silber');
//Über den Feldindex arbeiten. Also Index 0 um die Automarke als eindeutiges Feld zu wählen
print_r(array_unique_by_subitem($data, 0));
Ergibt
Array(
[0] => Array(
[0] => Volvo
[1] => blau
)
[2] => Array(
[0] => VW
[1] => silber
)
)
====Array mit Schlüssel====
$data[] = array('marke' => 'Volvo', 'farbe' => 'blau');
$data[] = array('marke' => 'Volvo', 'farbe' => 'grün');
$data[] = array('marke' => 'VW', 'farbe' => 'silber');
//Der key ist hier der Name des Schlüssels. In dem Fall 'marke'
print_r(array_unique_by_subitem($data, 'marke'));
Ergibt
Array(
[0] => Array(
[marke] => Volvo
[farbe] => blau
)
[2] => Array(
[marke] => VW
[farbe] => silber
)
)
{{tag>PHP Function Array}}