PHP array füllen while schleife

5 Antworten

Der while-Block wird nie ausgeführt, denn die Bedingung 

count($zahlen) > 10

ist schon von Anfang an false. Das Array hat ja zu dem Zeitpunkt noch gar keine Elemente, also auch nicht mehr als 10. Es müsste also genau andersherum sein:
$zahlen = array();
$i = 0;
while(count($zahlen) < 10){   
   array_push($zahlen, $i);   
   $i++;
}
print count($zahlen);

// Ausgabe: 10

Dory1  24.04.2015, 14:02

$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
)
1

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?


RakonDark  24.04.2015, 13:55

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 :)

1
puc1337 
Beitragsersteller
 24.04.2015, 14:03
@RakonDark

Sch*** schlafmangel danke für die antwort hat mir sehr geholfen!

0
puc1337 
Beitragsersteller
 24.04.2015, 13:55

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.

0
heilwigkenner  24.04.2015, 13:59
@puc1337

Ich würde es mit einer for-Schleife machen, da performanter.

for ($i = 0; $i <= 10; $i++){ array_push($zahlen, $i);}


0
heilwigkenner  24.04.2015, 13:53

Außerdem pushst du ja etwas in den Array, das heißt, count($var) wird immer größer als 10 sein.

0
RakonDark  24.04.2015, 13:58
@heilwigkenner

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.


0

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)