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