Sam: In Funktion aus Array auslesen?

Moin
habe folgendes Problem:

$array = array("test1", "test2", "test3");

$array[4] = "test4";

function getit() {

global $array;
  print $array[2];
  print $array[4];
}

Ich bekomme allerdings nur "test2" als ausgabe geliefert und nicht auch "test4". Warum?
Danke schonmal für eure Help.

  1. Hallo Sam,

    $array = array("test1", "test2", "test3");

    $array[4] = "test4";

    function getit() {

    global $array;
      print $array[2];
      print $array[4];
    }

    Ich bekomme allerdings nur "test2" als ausgabe geliefert und nicht auch "test4". Warum?

    Sieht ganz so aus als ob getit() breits vor dem erstellen des [4].elementes des array aufgerufen wird.

    WauWau

    --
    +-- WauWau Selfcode
    |   ss:) zu:) ls:< fo:~ de:] va:) ch:° n4:# rl:( br:< js:| ie:% fl:| mo:|
    +-- WauWau Nostalgie
    |   Die Bedeutung des Bellens ("WauWau") liegt ursprünglich darin, dass ein
    |   Gruppenfremder gewarnt oder ihm Alarm signalisiert wird.
    +-- WauWau Heute
    |   Heutzutage ist die Bedeutung von "WauWau": Achtung, hier kommt "WauWau"!
    |   Die Bedeutung liegt hierbei auf den "Wau", und zwar auf beiden.
    +-- WauWau E-Mail
    |   Coming soon...
    1. Habe vielleicht etwas zuw enig geschrieben, so etwas genauer:

      $array = array("test1", "test2", "test3");

      function getit() {

      global $array;
         print $array[2];
         print $array[4];
      }

      $array[4] = "test4";

      getit();

      In dieser Reihenfolge ist es. Und ich rufe die Funktion 100pro erst nach dem Erstellen des Elements auf. Das habe ich schon überprüft, war auch das erste was ich dachte.

  2. Hallo,

    Bist Du sicher, dass $array vorher nicht
    existiert bzw. leer ist?

    $array = array("test1", "test2", "test3");

    Das ist IMHO gleichbedeutend mit:
    $array[0]="test1";
    $array[1]="test2";
    $array[2]="test3";

    $array[4] = "test4";

    Lass Dir doch mal hier - d.h. ausserhalb der Funktion - anzeigen,
    was denn momentan in $array gespeichert ist:
    echo "<pre>";
    print_r($array);
    echo "</pre>";

    function getit() {
      global $array;
      print $array[2];
      print $array[4];
    }

    Ich bekomme allerdings nur "test2" als ausgabe geliefert und nicht auch "test4". Warum?

    Seltsam. Ich wuerde erwarten, dass er "test3test4" ausgibt.

    Btw.: $array finde ich als Variablenname nicht gerade schlau...

    Gruesse,

    Thomas

    --
    Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
    Ich mag es, wenn URLs verlinkt sind (</faq/#Q-19>).
    Oft gestellte PHP-Fragen beantwortet die dclp-FAQ bestens: http://www.dclp-faq.de/
    1. Die Variablennamen sind nur schnell gewählt nur hier schnell hingetippt.
      Ausserhalb der Funktion sind die gerade ins Array eingetragenen Variablen vorhanden. So habe ich es jetzt auch als Übergangslösung gemacht, dass der Funktion eben der Wert des Arrays direkt übergeben wird. Ist aber umständlich und unübersichtlich.

      Wie schon unten gezeigt ist die Reihenfolge Array - Funktion - etwas ins Array einfügen - Funktion aufrufen.

      1. Hallo,

        Die Variablennamen sind nur schnell gewählt nur hier schnell hingetippt.

        Copy-Paste ist meist besser als "schnell tippen"...

        [...] dass der Funktion eben der Wert des Arrays direkt übergeben wird.

        Das haette ich als naechstes vorgeschlagen... ;-)

        Wie schon unten gezeigt ist die Reihenfolge Array - Funktion - etwas ins Array einfügen - Funktion aufrufen.

        Erstaunt mich trotzdem sehr, dass das nicht klappt.
        Und ich kann es auch nicht nachvollziehen.
        Code:

        ----------
        $meinarray = array("test1", "test2", "test3");

        echo "<h2>Testausgabe 1</h2>";
        echo "<pre>";
        print_r($meinarray);
        echo "</pre>\n";

        function getit() {
        global $meinarray;
        print("<h2>In Funktion:</h2><p>[\n");
        print $meinarray[2];
        print "] [";
        print $meinarray[4];
        print "]";
        }

        $meinarray[4] = "test4";

        echo "<h2>Testausgabe 2</h2>";
        echo "<pre>";
        print_r($meinarray);
        echo "</pre>\n";

        getit();
        ----------

        Ausgabe:

        ----------

        Testausgabe 1
        Array
        (
            [0] => test1
            [1] => test2
            [2] => test3
        )

        Testausgabe 2
        Array
        (
            [0] => test1
            [1] => test2
            [2] => test3
            [4] => test4
        )

        In Funktion:
        [test3] [test4]
        ----------

        Gruesse,

        Thomas

        --
        Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
        Ich mag es, wenn URLs verlinkt sind (</faq/#Q-19>).
        Oft gestellte PHP-Fragen beantwortet die dclp-FAQ bestens: http://www.dclp-faq.de/
        1. Copy & Paste geht nicht, da die Programmteile auf Dateien verstreut sind und erst zusammen includet werden :) Ausserdem wärs dann 20x so lang.
          Vielleicht muss ich einfach noch eine Nacht drüber Schlafen damit ich den fehler seh.