Fehler im sort_multi_array

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Fehler im sort_multi_array

    Ich habe mr eine sort_multi_array-funktion geschrieben doch es
    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)); 
    Die Ausgabe sieht so aus:
    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
            
    )


    ich wollte nach 0,1,2 sortieren. 0 als höchste Priorität, 1 als zweithöchste... Warum geht das nicht?

  • #2
    Wie soll denn die Ausgabe aussehen?
    Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
    var_dump(), print_r(), debug_backtrace und echo.
    Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
    Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
    Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

    Kommentar


    • #3
      PHP-Code:
      Array
      (
          [
      0] => Array // [1]=>x kommt im Alphabet vor [1]=>y
              
      (
                  [
      0] => x
                  
      [1] => x
                  
      [2] => z
              
      )

          [
      1] => Array // y nach x
              
      (
                  [
      0] => x
                  
      [1] => y
                  
      [2] => y
              
      )

          [
      2] => Array
              (
                  [
      0] => x
                  
      [1] => z
                  
      [2] => x
              
      )

          [
      3] => Array // x vor y
              
      (
                  [
      0] => y
                  
      [1] => x
                  
      [2] => z
              
      )

          [
      4] => Array
              (
                  [
      0] => // y nach x
                  
      [1] => y
                  
      [2] => y
              
      )

          [
      5] => Array // [2]=>x vor [2]=>y
              
      (
                  [
      0] => z
                  
      [1] => x
                  
      [2] => y
              
      )

          [
      6] => Array // y nach x
              
      (
                  [
      0] => z
                  
      [1] => x
                  
      [2] => z
              
      )



      Kommentar

      Lädt...
      X