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
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
$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
)
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?
Sch*** schlafmangel danke für die antwort hat mir sehr geholfen!
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.
Ich würde es mit einer for-Schleife machen, da performanter.
for ($i = 0; $i <= 10; $i++){ array_push($zahlen, $i);}
Außerdem pushst du ja etwas in den Array, das heißt, count($var) wird immer größer als 10 sein.
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.
Der richtige Code:
$zahlen = array();
while(count($zahlen) < 10){
$i = 0;
array_push($zahlen, $i); $i++;
} ;
print count($zahlen);
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
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 :)