Eddie: knifflige Array-Funktion

Hi there,

ich muss ein Array sortieren, was sich irgendwie garnicht so einfach darstellt:

Das Originalarray sieht so aus:

$land_0 = array("kuerzel" => "cg",
               "normalerName" => "Kongo",
               "synonym" => "Zaire");
$land_1 = array("kuerzel" => "mm",
               "normalerName" => "Myanmar",
               "synonym" => "Burma");
$laender[0] = $land_0;
$laender[1] = $land_1;

Und was ich brauche ist das Ganze sortiert (nach Laendernamen), um daraus eine entsprechende DropDown-Box zu generieren, also:

$land_0 = array("kuerzel" => "mm",
               "name" => "Burma");
$land_1 = array("kuerzel" => "cg",
               "name" => "Kongo");
$land_2 = array("kuerzel" => "mm",
               "name" => "Myanmar");
$land_3 = array("kuerzel" => "cg",
               "name" => "Zaire");
$result[0] = $land_0;
$result[1] = $land_1;
$result[2] = $land_2;
$result[3] = $land_3;

Irgendeine Idee, wie ich das anpacken kann?

  1. Hi!

    Lies mal den 2. Kommentar, vielleicht hilft Dir das: http://www.php.net/manual/de/function.sort.php

    Grüße
    Andreas

  2. Ich sitze immer noch dran und habe keine Ahnung, wie ich dieses Problem effizient loesen kann.
    Mit 250 if-Bedingungen wuerds vielleicht gehen :-(

    Noch andere Ideen?

  3. Irgendeine Idee, wie ich das anpacken kann?

    <?

    $land_0=array(
        "kuerzel" => "cg",
        "normalerName" => "Kongo",
        "synonym" => "Zaire"
      );

    $land_1 = array(
        "kuerzel" => "mm",
        "normalerName" => "Myanmar",
        "synonym" => "Burma"
      );

    $i=0;
      while(isset(${'land_'.$i})) {
        $kuerzel[]=${'land_'.$i}['kuerzel'];
        $laender[]=${'land_'.$i}['normalerName'];
        if(isset(${'land_'.$i}['synonym'])) {
          $kuerzel[]=${'land_'.$i}['kuerzel'];
          $laender[]=${'land_'.$i}['synonym'];
        }
        $i++;
      }

    array_multisort($laender,SORT_ASC,SORT_STRING,$kuerzel);

    foreach($kuerzel as $key=>$value) {
        $result[]=array('kuerzel'=>$value,'name'=>$laender[$key]);
      }

    unset($kuerzel,$laender);

    echo '<pre>',"\n";
      print_r($result);
      echo '</pre>';

    ?>

    P.S.: Vorsicht mit Umlauten und Groß-/Kleinschreibung. Österreich kommt nach Zaire, DEUTSCHLAND nach Djibouti etc...