2008-11-12 6 views

Antwort

23
$array = array(); 
$array2 = array(); 

// for example 
for ($i = 0; $i < 10; ++$i) { 
    $array[] = 'new element'; 
} 

// while example 
while (count($array2) < 10) { 
    $array2[] = 'new element'; 
} 

print "For: ".count($array)."<br />"; 
print "While: ".count($array2)."<br />"; 
+0

Schlüssel in einem Array über $ array [] = ...; ist extrem langsam. Es lohnt sich, die $ i von "für" zwischen den eckigen Klammern zu haben. $ array [$ i] gibt Ihnen einen guten Leistungsschub im Vergleich zu $ ​​array [], wenn Sie große Datenmengen zuordnen. –

+0

Alternativ kann man die array_push() -Funktion verwenden –

+1

@I GIVE ... Ich fand dies falsch, ich habe einen Test auf Basis von bis zu 750.000 Iterationen durchgeführt und fand $ array [] schneller als $ array [$ i] in allen Fällen (vorausgesetzt, der Unterschied war eine Angelegenheit von Tausendstelsekunden) – Owen

10

Eine andere Herangehensweise an die schaffen for Schleife wäre ...

$array = array(); 

foreach(range(0, 9) as $i) { 
    $array[] = 'new element'; 
} 

print_r($array); // to see the contents 

ich diese Methode verwenden, finde ich es einfacher Blick vorbei, um zu sehen, was es tut.

Als strager wies darauf hin, es kann oder möglicherweise nicht einfacher zu Ihnen zu lesen. Er/sie weist auch darauf hin, dass ein temporäres Array erstellt wird und somit etwas teurer ist als eine normale for-Schleife. Dieser Overhead ist minimal, also macht es mir nichts aus, es auf diese Weise zu machen. Was Sie implementieren, bleibt Ihnen überlassen.

+0

Es wäre leicht zu lesen, wenn Sie einen Hintergrund in Python haben, aber wenn Sie von einem C-style Sprachhintergrund (in der Syntax, zB C++) sind , Java, C#) das wird dir seltsam vorkommen. Außerdem sieht der Code ineffizient aus und erstellt ein temporäres Array. – strager

+0

Okay, eine Bearbeitung ist vorhanden! – alex

+0

gibt es zwei Ineffizienzen, eine mit einer foreach-Schleife und eine Bereichsanweisung, wo eine einfache for-Schleife ausreicht, die andere ist in der Verwendung der array_push-Methode, die 200% langsamer ist als die Array [] -Anweisung (http://stackoverflow.com/questions/559844/whats-better-to-use-in-php-array-wert-oder-array-pusharray-wert) – ejectamenta

4

ein bisschen einfacher vielleicht für einen Anfänger zu verstehen ...

<?php 


// for loop 
for ($i = 0; $i < 10; $i++) { 

$myArray[$i] = "This is element ".$i." in the array"; 

echo $myArray[$i]; 

} 


//while loop 
$x = 0; 

while ($x < 10) { 

$someArray[$x] = "This is element ".$x." in the array"; 

echo $someArray[$x]; 

$x++; 
} 

?> 
2

Ich bin nicht sicher genau das, was Ihr Ziel ist hier. Die Arrays von PHP sind dynamisch, was bedeutet, dass Sie Elemente nach der Erstellung hinzufügen können - das heißt, Sie müssen die Länge des Arrays nicht am Anfang definieren. Ich nehme an, Sie wollen 10 beliebige Dinge in ein Array setzen.

for-Schleife:

$arr = array(); 
for ($i = 0; $i < 10; ++$i) { 
    $arr[] = "Element $i"; 
} 

while-Schleife:

$arr = array(); 
$i = 10; 
while (--$i) { 
    $arr[] = "Element $i"; 
} 

durch ihn zu definieren:

$arr = array("Element 1", "Element 2", "Element 3" ...); 

Oder wenn Sie wollte nur eine Reihe von Buchstaben oder Zahlen:

$arr = range(0, 9); 
$arr = range('a', 'j'); 
1

Der einfachste Weg ist array_fill() zu verwenden:

$array = array_fill(0, 10, 'Hello World'); 

Aber Sie sollten sicherstellen, dass PHP Arrays kennen kann geändert werden, wenn Sie so wie man will, habe ich noch nie ein Array von einer bestimmten Größe erstellen benötigt.