Helmut: Probleme bei mehrdimensionalen Array

In meinem Array sind alle Staaten:

$_staat['island']='Island';
$_staat['italien']='Italien';
$_staat['kasachstan']='Kasachstan';

usw.
nun möchte ich eine komplette Liste ausgeben

foreach($_staat AS $key => $value)
{
echo $key.' '.$value.'<br>';
)

nun sind leider in den Variablen key und $value die selben Werte, ich wollte aber in Key eigenedlich die Nummer des Array haben.

Oder habe ich womöglich gar keine in meinem Array drin???

  1. Hi,

    nun sind leider in den Variablen key und $value die selben Werte, ich wollte aber in Key eigenedlich die Nummer des Array haben.

    Oder habe ich womöglich gar keine in meinem Array drin???

    Nein, hast du natuerlich nicht, denn du hast dich fuer den Namen des jeweiligen Landes in Kleinschreibung als Array-Key entschieden.

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
  2. Tach!

    In meinem Array sind alle Staaten:
    $_staat['island']='Island';
    $_staat['italien']='Italien';
    $_staat['kasachstan']='Kasachstan';
    usw.

    Und was ist daran mehrdimensional, wie die Überschrift sagt? Das ist noch nicht mal eine Baumstruktur, nur ein flaches assoziatives Array: Die Zuordnung zu einem Wert erfolgt über einen benannten Schlüssel (anderswo auch Dictionary genannt).

    foreach($_staat AS $key => $value)
       echo $key.' '.$value.'<br>';
    nun sind leider in den Variablen key und $value die selben Werte, ich wollte aber in Key eigenedlich die Nummer des Array haben.

    Dieselben Werte sind es nicht, sie unterscheiden sich zumindest in der Groß-/Kleinschreibung. Und was für Nummern meinst du?

    Oder habe ich womöglich gar keine in meinem Array drin???

    Meinst du die Position im Array? Die musst du selbst mitzählen, die wird in einem assoziativen Array nicht gepflegt und ist nicht abfragbar. Wenn du allerdings keinen Namen im Key brauchst, dann lass ihn weg und PHP vergibt numerische Schlüssel.

    dedlfix.

    1. Ich verstehe, fast....

      Aber warum, wird mir, wenn ich vorher

      sort($_staat);  <--------

      aufrufe und dann

      foreach($_staat AS $key => $value)
      {
      echo $key.' '.$value.'<br>';
      )

      in key eine Zahl ausgegeben

      und wenn ich es nicht mache
      in key mein kleingeschriebener Staat

      Helmut

      Tach!

      In meinem Array sind alle Staaten:
      $_staat['island']='Island';
      $_staat['italien']='Italien';
      $_staat['kasachstan']='Kasachstan';
      usw.

      Und was ist daran mehrdimensional, wie die Überschrift sagt? Das ist noch nicht mal eine Baumstruktur, nur ein flaches assoziatives Array: Die Zuordnung zu einem Wert erfolgt über einen benannten Schlüssel (anderswo auch Dictionary genannt).

      foreach($_staat AS $key => $value)
         echo $key.' '.$value.'<br>';
      nun sind leider in den Variablen key und $value die selben Werte, ich wollte aber in Key eigenedlich die Nummer des Array haben.

      Dieselben Werte sind es nicht, sie unterscheiden sich zumindest in der Groß-/Kleinschreibung. Und was für Nummern meinst du?

      Oder habe ich womöglich gar keine in meinem Array drin???

      Meinst du die Position im Array? Die musst du selbst mitzählen, die wird in einem assoziativen Array nicht gepflegt und ist nicht abfragbar. Wenn du allerdings keinen Namen im Key brauchst, dann lass ihn weg und PHP vergibt numerische Schlüssel.

      dedlfix.

      1. Hallo!

        Aber warum, wird mir, wenn ich vorher

        sort($_staat);  <--------

        aufrufe
        in key eine Zahl ausgegeben

        Weil sort() das macht:

        ´´Hinweis: Diese Funktion weist den Elementen des Arrays array neue Schlüssel zu. Bestehende Schlüssel, die Sie eventuell zugewiesen haben, werden entfernt statt einfach nur die Schlüssel neu anzuordnen.``

        Und bitte vermeide TOFU. Das ist nicht schön in Foren.

        Matze

    2. Hallo,

      Und was ist daran mehrdimensional, wie die Überschrift sagt? Das ist noch nicht mal eine Baumstruktur, nur ein flaches assoziatives Array: Die Zuordnung zu einem Wert erfolgt über einen benannten Schlüssel (anderswo auch Dictionary genannt).

      sag mal, magst du das nicht mal verlinken und dann einfach nur noch den Link einbinden? Ich hatte auf deine Antwort schon gewartet.... nicht böse gemeint. Mir geht es auch auf den Sack, wenn jemand Baumstrukturen mehrdimensional nennt. Oder gar Feld.

  3. Zu einem numerierten Array gelangst Du mit

    $_staat[]='Island';
    $_staat[]='Italien';
    $_staat[]='Kasachstan';

    (Achtung, beginnt bei 0)

    oder indem Du array_values() auf Dein bestehendes Array anwendest.

    Cheers,
    Baba

  4. Hi,

    In meinem Array sind alle Staaten:

    $_staat['island']='Island';
    $_staat['italien']='Italien';
    $_staat['kasachstan']='Kasachstan';

    ich weiß ja nicht, was du vorhast, aber das Vorliegende ist erstmal ziemlich ungünstig.
    erstmal könntest du das anders schreiben

      
    $staaten = array(  
    "Island",  
    "Italien",  
    "Kasachstan",  
    );  
    
    

    Damit würdest du dir schonmal immer den Arraynamen ($staate) sparen. Warum reicherst du sie nicht mit Information an? Zum Beispiel mit den Ländercodes nach ISO-3166-1?

      
    $staaten = array(  
     "IT" => "Italien",  
     "IS" => "Island",  
     "KZ" => "Kasachstan",  
      
    );  
    
    

    Nur mal so zur Anregung.