Logikfrage PHP
Alexander44564
- php
0 Blubb0 Alexander445640 Blubb0 Alexander445640 Blubb
Ich habe ein Problem bei Verständinis mit zwei PHP Schleifen.
Meiner Meinung nach müsste bei diesem PHP Code ein zweidimensionalens arr_2 Array entstehen, dass auf jeder Stelle ein arr_1 Array hat.
In der Ausgabe ist arr_2 aber immer nur zweidimensionales Array, dass nur ein arr_1 enthält, und zwar das aus der letzten for-Schleife.
for ($u = 0; $u < 3; $u++) {
$arr_1 = array();
$arr_2 = array();
for ($i = 0; $i < 4; $i++) {
$arr_1[$i] = ( (2+$i) * (3+$i) );
}
$arr_2[$u] = $arr_1;
}
var_dump($arr_2);
Ergebnis:
array(1) { [2]=> array(4) { [0]=> int(6) [1]=> int(12) [2]=> int(20) [3]=> int(30) } }
Hallo,
for ($u = 0; $u < 3; $u++) {
für alle $u von 0 bis 2,
$arr_1 = array();
$arr_2 = array();
lege $arr_1 *und* $arr_2 an,
[...]
mache irgendwas,
$arr_2[$u] = $arr_1;
und weise dem gerade neu angelegtem $arr_2 dieses irgendwas zu.
Grüße
Aber habe ich dass nicht eh so gemacht? Ich will ja, dass das arr_1, dass bei jedem Zyklus der for Schleife (u++) mit anderen Werten gefüllt wird, immer in das arr_2 gespeichert wird, mit fortlaufendem Index (deshalb arr_2[$u].
Hallo,
for ($u = 0; $u < 3; $u++) {
für alle $u von 0 bis 2,
$arr_1 = array();
$arr_2 = array();
lege $arr_1 *und* $arr_2 an,
[...]
mache irgendwas,
$arr_2[$u] = $arr_1;
und weise dem gerade neu angelegtem $arr_2 dieses irgendwas zu.Grüße
Hallo,
lies nochmal meinen ersten Kommentar. In *jedem* Durchlauf passiert etwas mit $arr_2 was du nicht so willst. Das erklärt auch, warum mysteriöserweise immer nur der letzte Wert in $arr_2 gesetzt ist.
Grüße
arr_2 = array (leer);
Danke =)
Hab nicht gewusst, dass es immer gelöscht wird.
Richtig, Logikfehler gefunden.
Hab nicht gewusst, dass es immer gelöscht wird.
Nunja, $x = array();
legt unter dem Namen $x einen neuen leeren Speicherbereich an, der als Array genutzt werden kann. Wenn du vorher schon eine Variable mit diesem Namen hattest, geht der Inhalt dieser dadurch "verloren": Du kannst nicht mehr auf die alten Inhalte zugreifen.
Ich kenne PHP nicht gut genug, um zu sagen, ob der alte Inhalt noch irgendwo im Speicher liegen könnte. Ist aber auch nicht wichtig, da du eh nicht mehr ran kommst.
Grüße