======[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}}