AndreR: Assoziatives Array: Numerisch auslesen

Ich möchte gerne aus einer Array (Stil: String => Zahl), die bereits vorsortiert ist, eine bestimmte Anzahl an Einträgen von links nach rechts auslesen und diese dann in eine INI schreiben mit dem Stil String = Zahl. Kann mir irgendwer sagen, wie ich so etwas möglichst simpel realisieren kann? Ich komm' echt nicht drauf.

Danke schonmal für die Hilfe.

  1. Moin!

    Ich möchte gerne aus einer Array (Stil: String => Zahl), die bereits vorsortiert ist, eine bestimmte Anzahl an Einträgen von links nach rechts auslesen und diese dann in eine INI schreiben mit dem Stil String = Zahl. Kann mir irgendwer sagen, wie ich so etwas möglichst simpel realisieren kann? Ich komm' echt nicht drauf.

    Hast du schon foreach probiert?

    - Sven Rautenberg

    --
    "Love your nation - respect the others."
    1. Hast du schon foreach probiert?

      Was meinst Du damit genau? Ich habe bisher folgendes probiert:

      for($i = 0; $i < 3; $i++) {  
        echo $daten[$i];  
      }
      

      Der Inhalt ist natürlich Käse, das ist mir klar. Aber wie gesagt, ich weiss nicht, wie ich da was ausgeben soll.

      Beispiel: Ich habe folgende Array:

      Array
      (
          [Blastadt] => 6
          [Foolhausen] => 5
          [Nixstätten] => 4
          [Testdorf] => 3
          [Dingsburg] => 1
      )

      Wie bekomme ich da nun die ersten 3 Beiträge heraus gefiltert und in der Form $x = $name.' = '.$zahl ausgeliefert?

      1. Moin!

        Hast du schon foreach probiert?

        Was meinst Du damit genau?

        foreach anstelle von for.

        Ich habe bisher folgendes probiert:

        for($i = 0; $i < 3; $i++) {

        echo $daten[$i];
        }

          
        ~~~php
          
        foreach ($array as $key => $value) {  
          echo $key . " enthält " . $value ."\n";  
        }  
        
        

        PS, Sondertipp: Bei allen dir unbekannten PHP-Befehlen gibst du in die URL deines Browsers ein:

        "www.php.net/" und danach den Befehl, hier also "foreach".

        Wenn du dich vertippst, sucht die Doku nach ähnlich klingenden Befehlen und leitet auf die passende Seite weiter oder liefert dir eine Liste möglicher Ergebnisse zum Selbstaussuchen.

        - Sven Rautenberg

        --
        "Love your nation - respect the others."
        1. foreach ($array as $key => $value) {
            echo $key . " enthält " . $value ."\n";
          }

            
          Und wie begrenze ich das Ganze auf X durchläufe? Dazu habe ich nichts gefunden.  
            
          
          > PS, Sondertipp: Bei allen dir unbekannten PHP-Befehlen gibst du in die URL deines Browsers ein:  
          >   
          >  "www.php.net/" und danach den Befehl, hier also "foreach".  
            
          Jops, das kenne ich schon und benutze es auch rege ;).
          
          1. Moin!

            foreach ($array as $key => $value) {
              echo $key . " enthält " . $value ."\n";
            }

            
            >   
            > Und wie begrenze ich das Ganze auf X durchläufe? Dazu habe ich nichts gefunden.  
              
            Im Zweifel: Mitzählen und break aufrufen. :)  
              
            Alternativ: Die Funktion array\_keys() liefert dir ein Array aller Schlüssel, damit kannst du die ersten X dann ermitteln und zum Arrayzugriff verwenden.  
              
             - Sven Rautenberg
            
            -- 
            "Love your nation - respect the others."
            
            1. Im Zweifel: Mitzählen und break aufrufen. :)

              Hab' ne bessere Lösung gefunden. Ich bearbeite die Array vorher mit array_slice, stutze sie also direkt auf die richtige Länge. Dann kann ich ganz normal foreach laufen lassen. Klappt jetzt zufriedenstellend. Danke für die Hilfe!

  2. Hello,

    Ich möchte gerne aus einer Array (Stil: String => Zahl), die bereits vorsortiert ist, eine bestimmte Anzahl an Einträgen von links nach rechts auslesen und diese dann in eine INI schreiben mit dem Stil String = Zahl. Kann mir irgendwer sagen, wie ich so etwas möglichst simpel realisieren kann? Ich komm' echt nicht drauf.

    in den UCN von http://de.php.net/manual/de/function.parse-ini-file.php findest Du eine ganze Klasse dafür.

    Und wenn Du es selber machen willst, fang mit foreach()
    http://de.php.net/manual/de/control-structures.foreach.php
    an.

      
    define ('CRLF',chr(13));  
    $stream = '':  
      
    if (is_array($_ini))  
    {  
      foreach ($_ini as $key => $val)  
      {  
        $stream .= "$key = $val".CRLF;  
      }  
    }  
      
    file_put_contents('inifilename',$stream);  
    
    

    Das ist jetzt für einfache Arrays, alos ohne Subarrays.
    Pars_Ini_File() kann (nur) zwei ebenen lesen. Du könntest also noch eine weiterte einbauen. Rekursion lohnt sich da noch nicht wirklich...

    File_Put_Contents() berücksichtigt kein Locking, dient hier also nur zu testzwecken. Für den aktiven Betrieb bitte mit fopen, flock, frite, fclose arbeiten.

    Harzliche Grüße vom Berg
    http://bergpost.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)