[PHP] Aus Funktion auf mehrdim. Array zugreifen

Retep

Well-known member
ID: 102024
L
29 April 2006
378
4
Hallo zusammen,

ich möchte in einer Funktion auf die Werte eines zweidimensionalen Arrays zugreifen, welches ausserhalb der Funktion (vor deren Aufruf) eingeführt wurde. Also z.B. so

Array ist $zwei[][],
Funktion ist function test($a,$b) { if ($zwei[$a][$b]==...) .... }

funktioniert es nicht, weil $zwei in der Funktion test nicht bekannt ist.

Wie geht man hier vor?
 
PHP:
function foo()
{
  global $your_array; // <-- die Zeile

  $your_array['bar'] = 42;
}
 
naja am besten du übergibst die variable mit an die Funktion. Ansonsten müßtest du die Variable in der Funktion als globale variable festlegen.
 
PHP:
$array["bla"]["bla"]=array();
function bla($a,$b)
{
GLOBAL $array;
}

Edit:
Bububoomt schrieb:
naja am besten du übergibst die variable mit an die Funktion. Ansonsten müßtest du die Variable in der Funktion als globale variable festlegen.
Dann aber auch nur als Pointer.. ;)
 
PHP:
function foo()
{
  global $your_array; // <-- die Zeile

  $your_array['bar'] = 42;
}

Das funktioniert nicht (vielleicht weils ein zweidim. Array ist?).
Die Situation ist so, dass $zwei[][] schon vorher Werte zugewiesen bekommt, und wenn ich in der Methode echo $zwei[$a][$b]; eingebe, steht dort nichts, die Werte sind also nicht da.

@ Bububoomt, wie übergebe ich denn das Array an die Funktion? Das habe ich auch schon probiert, aber benutze wohl falschen Syntax oder so :roll:
 
Das funktioniert nicht (vielleicht weils ein zweidim. Array ist?).
Die Situation ist so, dass $zwei[][] schon vorher Werte zugewiesen bekommt, und wenn ich in der Methode echo $zwei[$a][$b]; eingebe, steht dort nichts, die Werte sind also nicht da.
Zeig nochmal deinen Code.
 
Das funktioniert nicht (vielleicht weils ein zweidim. Array ist?).
Das is wurscht. Du kannst ein n-dimensionales Array, genauso wie eine Variable oder ein Objekt damit in den Kontext der Funktion holen.
Die Situation ist so, dass $zwei[][] schon vorher Werte zugewiesen bekommt, und wenn ich in der Methode echo $zwei[$a][$b]; eingebe, steht dort nichts, die Werte sind also nicht da.
Auch wurscht. Ich geb zu, mein Beispiel war ned sonderlich gut gewählt, da du ja Lesezugriff willst, aber auch das geht. Du hast sicher wo anders n Fehler.

Probier mal diesen Testcode:
PHP:
$dim_array1 = array();
$dim_array1[42][4711] = 'foobar';

$dim_array2 = array();
$dim_array2[42][4711] = 'barfoo';

function test()
{
  global $dim_array1;

  echo $dim_array1[42][4711]."\n"; // <-- Ausgabe: foobar
  echo $dim_array2[42][4711]; // <-- E_NOTICE: $dim_array2 nicht definiert
}

test();
 
.

Zeig nochmal deinen Code.

Ich habe vergessen, einen Laufindex in der Methode ebenfalls zu globalisieren, dadurch hatte ich keine Ausgabe. Abgesehen davon hatte ich es von Anfang an richtig. Leider ist mir das erst eben beim spazieren gehen eingefallen (nachdem ich über eine Stunde lang wie ein Dummbeutel gegoogelt und danach diesen Thread erstellt hatte ;)).

Trotzdem danke für Eure Antworten.

Edit: @ theHacker tut mir leid dass Du Dir mit dem Testcode umsonst die Mühe gemacht hast.. wobei das sicherlich irgendwann jemand gebrauchen kann.
 
Edit: @ theHacker tut mir leid dass Du Dir mit dem Testcode umsonst die Mühe gemacht hast.. wobei das sicherlich irgendwann jemand gebrauchen kann.
Muss dir nicht Leid tun ;)

Wenn jemand nach dem Thread sucht und der Code hilft, war die Mühe nicht umsonst.

...im Übrigen gibt es kräftig Keys 8) :dance: