array() und Referenzen

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

  • array() und Referenzen

    Woran ich gerade hänge, ist der folgende Code:
    PHP-Code:
    $ar = array("bla" => &$blub);
    $blub 42
    Nach meinem Verständnis sollte echo($ar["bla"]) danach 42 ausgeben. Tut es auch tatsächlich auf den meisten Servern, auf denen ich es getestet habe. Allerdings macht mir ein Server (PHP-Version 4.3.4, die anderen sind alle älter) Probleme. Bei dem scheint das einfach dasselbe zu sein wie ohne Referenz, es gibt also gar keine Ausgabe.

    Wenn ich dagegen
    PHP-Code:
    $ar["bla"] &= $blub;
    $blub 42
    schreibe, wird auf allen Servern das richtige Ergebnis 42 ausgegeben. Weiß zufällig jemand, ob es da irgendeine Änderung in den letzten PHP-Versionen gegeben hat oder ob diese Funktionsweise von irgendwelchen Optionen abhängt (halte ich für unwahrscheinlich, aber man weiß ja nie...)?

  • #2
    du definierst $blub nachdem du es benötigst?
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Zugegeben, das war jetzt stark vereinfacht, aber die Logik dahinter müßte doch stimmen, oder? In Wirklichkeit ist das $blub ein Array, das hinterher unter Umständen noch verändert wird. Und das $ar enthält natürlich auch noch mehr als die eine Referenz. Aber der ganze Kram drumrum beeinflußt die Sache sowieso nicht, warum sollte ich es also unnötig kompliziert machen?

      Kommentar


      • #4
        Original geschrieben von kevin
        Aber der ganze Kram drumrum beeinflußt die Sache sowieso nicht, warum sollte ich es also unnötig kompliziert machen?
        das brauchst du auch nicht.

        nur wie bitte willst du eine referenz auf eine var erzeugen, wenn selbige noch nicht definiert ist?

        das ist so, als willst du die autotür aufmachen von einem auto, welches noch nicht gebaut ist. geht das? ja. aber es, wenn das auto fertig ist.
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          In diesem kurzen Beispiel ist sie nicht definiert. Das Array, das ich da in meinem Skript einbaue, ist sehr wohl definiert. Es ist also eher so, als ob ich die Tür von einem Auto aufmache, in dem noch kein Motor eingebaut ist. Oder so. Und wenn später der Motor eingebaut ist, würde ich gern auch noch auf diesen zugreifen.

          Aber abgesehen davon, ob du den Sinn hinter meinem Code verstehst: Warum es mit array() nicht geht, sondern nur mit &=, weißt du auch nicht? Schade...

          Kommentar


          • #6
            man . jetzt tausche die zeilen doch einfach mal
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              Wenn dieses $blub doch aber ein Array ist und in fünf anderen Include-Dateien möglicherweise noch geändert wird... Zumindest mit vertretbaren Aufwand kann ich nicht die komplette Reihenfolge ändern.
              Da stelle ich noch eher das ganze auf $ar["bla"] &= $blub um.

              Kommentar

              Lädt...
              X