Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Mehrdimesionales Array sortieren u. ausgeben

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Mehrdimesionales Array sortieren u. ausgeben

    Hallo,

    ich habe ein Array, das ungefaehr so aussieht, bloss viel laenger:

    $name[4][324]
    $name[4][399]
    $name[5][374]
    $name[6][364]
    ...


    Jetzt will ich das Array nach der hinteren Zahl sortieren, also 324,364,374,399. Von klein nach gross. Anschliessend soll es ausgegeben werden. Wie bekomme ich das hin. Bin am Verzweifeln!

    Danke!!!

  • #2
    Simpel ausgedrückt: geht nicht.

    Kommentar


    • #3
      Code:
      function _order_result($result, $order = '', $asc = true)
      {
      	if (empty($order) || !isset($result[0][$order])) return $result;
      	
      	$array  = array();
      	$output = array();
      	
      	for ($i = 0; $i < count($result); $i++) {
      	
      		$array["$i"] = $result[$i][$order];
      	
      	}
      	
      	if ($asc) {
      	
      		asort($array);
      		
      	} else {
      	
      		arsort($array);
      	
      	}
      	
      	reset($array);
      	
      	while (list($key, $value) = each($array)) {
      		
      		$i        = intval($key);
      		
      		$output[] = $result[$i];
      	
      	}
      	
      	return $output;
      
      }
      Damit kann man ein Array der Form
      Code:
      array(
        array(
          'name' => 'thomas',
          'alter' => '37',
          'wohnort' => 'koeln'
        ),
        array(
          'name' => 'dieter',
          'alter' => '41',
          'wohnort' => 'hamburg'
        )
      );
      nach z. B. alter sortieren:
      Code:
      $sortiert = _order_result($array, 'alter', false);
      Fast das, was du suchst

      Kommentar


      • #4
        Bei mir, wird so aber nix sortiert!

        Code:
        <?
        function _order_result($result, $order = '', $asc = true) 
        { 
           if (empty($order) || !isset($result[0][$order])) return $result; 
            
           $array  = array(); 
           $output = array(); 
            
           for ($i = 0; $i < count($result); $i++) { 
            
              $array["$i"] = $result[$i][$order]; 
            
           } 
            
           if ($asc) { 
            
              asort($array); 
               
           } else { 
            
              arsort($array); 
            
           } 
            
           reset($array); 
            
           while (list($key, $value) = each($array)) { 
               
              $i        = intval($key); 
               
              $output[] = $result[$i]; 
            
           } 
            
           return $output; 
        
        }
        ?>
        
        
        
        
        
        <?php
        $fruits = array (
        "Obst" => array ("Orange","Banane","Apfel"),
        "Zahlen" => array (4, 5, 6,1,2,3),
        "Werte" => array ("erstes", "zweites", "drittes")
        );
        
        $sortiert = _order_result($fruits, 'Zahlen', false);
        
        
        print_r($sortiert);
        
        ?>

        Kommentar

        Lädt...
        X