======[PHP] array_sort_by_subarray_item()====== Ein mehrdimensionales Array nach einem Feld in einem Subarray zu sortieren braucht immer etwas Hirnschmalz um den array_multisort() richtig anzuwenden. Darum habe ich hier das mal ein eine nette Funktion gepackt. =====Neue Version===== /** * mpl by ERB software * @author stefan.erb(at)erb-software.com * @since PHP 5.2 * Sortiert einen 2-Dimensionalen Array nach einem Key in der 2ten Dimension * @param $array Array der sortiert wird * @param $key Key im Array der sortiert werden soll (key oder index) * @param $direction Sortierrichtung. SORT_ASC oder SORT_DESC * @param $sort_flags SORT_REGULAR, SORT_STRING, SORT_NUMERIC. Siehe sort_flags-Parameter von sort() */ function array_sort_by_subarray_item(&$array, $key, $direction = SORT_ASC, $sort_flags = SORT_REGULAR){ $sort = array(); foreach($array as $index => $item){ $sort[$index] = strtoupper($item[$key]); } return array_multisort($sort, $direction, $sort_flags, $array); } Code zum testen //Testdaten $array[] = array('Name' => 'Eintrag 1', 'sort' => 15); $array[] = array('Name' => 'Eintrag 2', 'sort' => 2); $array[] = array('Name' => 'Eintrag 3', 'sort' => 5); $array[] = array('Name' => 'Eintrag 4', 'sort' => 4); //sortieren nach dem key sort array_sort_by_subarray_item($array, 'sort', SORT_ASC, SORT_NUMERIC); //Ausgeben der Daten var_dump($array); //und absteigend array_sort_by_subarray_item($array, 'sort',SORT_DESC, SORT_NUMERIC); var_dump($array); //Nach Index (in dem Fall: Index 1 = sort) array_sort_by_subarray_item($array, 1, SORT_DESC, SORT_NUMERIC); var_dump($array); //Nach Name array_sort_by_subarray_item($array, 'Name'); var_dump($array); ---- {{tag>PHP Function Array}}