1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 6: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51:
PHP $data [] = Reihe („Name“ => „h“, „Liste“ => Reihe (1.2)); $data [] = Reihe („Name“ => „g“, „Liste“ => Reihe (1)); $data [] = Reihe („Name“ => „a“, „Liste“ => Reihe (1.3)); $data [] = Reihe („Name“ => „f“, „Liste“ => Reihe (2)); $data [] = Reihe („Name“ => „e“, „Liste“ => Reihe (2.3)); $data [] = Reihe („Name“ => „b“, „Liste“ => Reihe (3)); $data [] = Reihe („Name“ => „c“, „Liste“ => Reihe (1.2.3.4)); $data [] = Reihe („Name“ => „d“, „Liste“ => Reihe (3.4)); Funktion deep_sort ($array, $sorton) { usort ($array, Funktion ($a, $b) Gebrauch ($sorton) { $a = $a [$sorton]; $b = $b [$sorton]; wenn (is_array ($a) && is_array ($b)) { // diese Spitze ist - nur eingeschlossen zu den illustrativen Zwecken offensichtlich defekt $a = implodieren ('', $a); $b = implodieren ('', $b); } zurückgehen ($a == $b)? 0: ($a > $b)? 1: -1; }); Rückhol$array; } $sorted_by_name = deep_sort ($data, „Name "); Druck „“; print_r ($sorted_by_name); Druck „“; $sorted_by_list = deep_sort ($data, „Liste "); Druck „“; print_r ($sorted_by_list); Druck „“; ? >
“; print_r ($sorted_by_name); Druck „
“; print_r ($sorted_by_list); Druck „
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 6: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67:
"; // TEST DATA FROM THE POST AT EE $data[] = array('name' => „h“, „Liste“ => Reihe (1.2)); $data [] = Reihe („Name“ => „g“, „Liste“ => Reihe (1)); $data [] = Reihe („Name“ => „a“, „Liste“ => Reihe (1.3)); $data [] = Reihe („Name“ => „f“, „Liste“ => Reihe (2)); $data [] = Reihe („Name“ => „e“, „Liste“ => Reihe (2.3)); $data [] = Reihe („Name“ => „b“, „Liste“ => Reihe (3)); $data [] = Reihe („Name“ => „c“, „Liste“ => Reihe (1.2.3.4)); $data [] = Reihe („Name“ => „d“, „Liste“ => Reihe (3.4)); // EINE FUNKTION, ZUM DURCH NAMES ZU VERGLEICHEN Funktion cmp_name ($a, $b) { wenn ($a [„Name“] == $b [„Name“]) Rückkehr 0; zurückgehen ($a [„Name“] <> $arr) { $test [$ptr] [„Gruppe“] = implodieren ('', $arr [„Liste“]); wenn (strlen ($test [$ptr] [„Gruppe“]) > strlen $maxlen) $maxlen = ($test [$ptr] [„Gruppe“]); } //-AUFLAGE DIE GRUPPEN ZUR GLEICH BLEIBENDEN LÄNGE foreach ($test als $ptr => $arr) { $test [$ptr] [„Gruppe“] = str_pad ($test [$ptr] [„Gruppe“], $maxlen+1, „0“); } //-ART AUF GRUPPEN usort ($test, „cmp_group "); // ENTFERNEN DIE GRUPPEN (WENN ERFORDERLICH) foreach ($test als $ptr => $arr) { unset ($test [$ptr] [„Gruppe“]); } //-ERSCHEINEN DAS ARBEITS-PRODUKT var_dump ($test);