PHP array füllen while schleife
Hi Könnte mir jemand sagen warum das nicht funktioniert?
$zahlen = array();
while(count($zahlen) > 10){
$i = 0;
array_push($zahlen, $i);
$i++;
}
print count($zahlen);
5 Antworten
![](https://images.gutefrage.net/media/user/Dory1/1463259757316_nmmslarge__113_0_387_387_9cc3321f365109157e4332f57e79e665.png?v=1463259759000)
Der while-Block wird nie ausgeführt, denn die Bedingung
count($zahlen) > 10
$zahlen = array(); $i = 0; while(count($zahlen) < 10){ array_push($zahlen, $i); $i++; } print count($zahlen); // Ausgabe: 10
![](https://images.gutefrage.net/media/user/Dory1/1463259757316_nmmslarge__113_0_387_387_9cc3321f365109157e4332f57e79e665.png?v=1463259759000)
$i wäre im übrigen immer 0, wenn du die Zuweisung
$i = 0;
innerhalb der while-Schleife setzt. Ich habe sie jetzt davor gesetzt, damit die Zahl auch wirklich hochgezählt wird (ich nehme an das hattest du vor).
print_r($zahlen);
Ausgabe:
Array(
[0] => 0
[1] => 1
[2] => 2
[3] => 3
[4] => 4
[5] => 5
[6] => 6
[7] => 7
[8] => 8
[9] => 9
)
![](https://images.gutefrage.net/media/default/user/8_nmmslarge.png?v=1551279448000)
Naja i ist immer 0, aber was heißt es funktioniert nicht?
Der Quellcode ergibt halt keinen Sinn, weil du einen Array in einen Array pushst. Was willst du mit dem Code bezwecken?
![](https://images.gutefrage.net/media/default/user/8_nmmslarge.png?v=1551279448000)
![](https://images.gutefrage.net/media/user/puc1337/1444748006_nmmslarge.jpg?v=1444748006000)
Sch*** schlafmangel danke für die antwort hat mir sehr geholfen!
![](https://images.gutefrage.net/media/user/puc1337/1444748006_nmmslarge.jpg?v=1444748006000)
Bin ein totaler Neuling mit starkem Schlafmangel Ich möchte mein Array via While schleife mit zahlen füllen.Würde mich sehr über eine nicht sarkastische Antwort freuen.
![](https://images.gutefrage.net/media/default/user/8_nmmslarge.png?v=1551279448000)
Ich würde es mit einer for-Schleife machen, da performanter.
for ($i = 0; $i <= 10; $i++){ array_push($zahlen, $i);}
![](https://images.gutefrage.net/media/default/user/8_nmmslarge.png?v=1551279448000)
Außerdem pushst du ja etwas in den Array, das heißt, count($var) wird immer größer als 10 sein.
![](https://images.gutefrage.net/media/user/RakonDark/1552185525294_nmmslarge__0_0_160_160_7f828fad18ee7edb96b8daceedaeeadb.png?v=1552185525000)
du wolltest schreiben wird NIE größer als 10 da es gar nicht erst ausgeführt wird das while und somit sich nix verändert.
![](https://images.gutefrage.net/media/user/puc1337/1444748006_nmmslarge.jpg?v=1444748006000)
Der richtige Code:
$zahlen = array();
while(count($zahlen) < 10){
$i = 0;
array_push($zahlen, $i); $i++;
} ;
print count($zahlen);
![](https://images.gutefrage.net/media/user/RakonDark/1552185525294_nmmslarge__0_0_160_160_7f828fad18ee7edb96b8daceedaeeadb.png?v=1552185525000)
count() > 10
das wird ja nie was :)
das Array ist am Anfang 0 groß , ergo ist 0 > 10 nicht wahr damit gibts kein while mehr
![](https://images.gutefrage.net/media/default/user/15_nmmslarge.png?v=1551279448000)
falls es dir nur ums ergebnis geht: $zahlen = range(0, 9)
sinn ergibt das schon , er will 0 bis 9 Felder erzeugen .
und es pusht ja kein array in array , sondern ein wert i wird im array (array_push) hinzugefühgt , man kann auch ein array als element hinzufühgen das ist wurst , aber logisch ist das schon .
am ende steht da
0
1
2
3
4
5
6
7
8
9
wenn ers richtig macht :)