Ich habe mr eine sort_multi_array-funktion geschrieben doch es 
	
Die Ausgabe sieht so aus: 
	
ich wollte nach 0,1,2 sortieren. 0 als höchste Priorität, 1 als zweithöchste... Warum geht das nicht?
							
						
					PHP-Code:
	
	
error_reporting(E_ALL);
function sort_multi_array(){
 $arguments = func_get_args();
 $array = $arguments[0];
 function cmp($x,$y,$z){
  if(is_numeric($x[$z]) && is_numeric($y[$z])){
   if($x[$z]==$y[$z]){
    return 0;
   }elseif($x[$z]>$y[$z]){
    return 1;
   }elseif($x[$z]<$y[$z]){
    return -1;
   }
  }else{
   return strcasecmp($x[$z], $y[$z]);
  }
 }
 for($c=count($arguments)-1;$c>=1;$c--){
  if($arguments[$c] == SORT_DESC){
   continue;
  }
  $my_func = create_function('$a,$b','return cmp($a,$b,'.$arguments[$c].');');
  usort($array, $my_func);
  if(isset($arguments[$c+1]) && $arguments[$c+1] == SORT_DESC){
   $array = array_reverse($array);
  }
 }
 return $array;
}
$e[] = array("x","y","y");
$e[] = array("x","x","z");
$e[] = array("x","z","x");
$e[] = array("y","x","z");
$e[] = array("y","y","y");
$e[] = array("z","x","z");
$e[] = array("z","x","y");
print_r(sort_multi_array($e,0,1,2)); 
PHP-Code:
	
	
Array
(
    [0] => Array // sollte [1] sein
        (
            [0] => x
            [1] => y
            [2] => y
        )
    [1] => Array // sollte[0] sein
        (
            [0] => x
            [1] => x
            [2] => z
        )
    [2] => Array
        (
            [0] => x
            [1] => z
            [2] => x
        )
    [3] => Array
        (
            [0] => y
            [1] => y
            [2] => y
        )
    [4] => Array
        (
            [0] => y
            [1] => x
            [2] => z
        )
    [5] => Array
        (
            [0] => z
            [1] => x
            [2] => z
        )
    [6] => Array
        (
            [0] => z
            [1] => x
            [2] => y
        )
) 
 
          


 
 
Kommentar