Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Array-Traversal-Funktionen und ihre Verwendungszusammenfassung

PHP-Array-Traversal-Funktionen und ihre Verwendungszusammenfassung

伊谢尔伦
伊谢尔伦Original
2017-06-22 15:09:411630Durchsuche

1. foreach()

foreach() ist die einfachste und effektivste Methode, um die Daten im Array zu durchlaufen .

#example1:

<?php
$colors= array(&#39;red&#39;,&#39;blue&#39;,&#39;green&#39;,&#39;yellow&#39;);
foreach ($colorsas$color){
echo "Do you like $color? <br />";
}
?>

Ergebnisse anzeigen:

Magst du Rot?
Magst du Blau?
Magst du Grün?
Magst du Gelb?

2. while()

while() wird normalerweise in Verbindung mit list() und every( verwendet ).

#example2:

<?php
$colors= array(&#39;red&#39;,&#39;blue&#39;,&#39;green&#39;,&#39;yellow&#39;);
while(list($key,$val)= each($colors)) {
echo "Other list of $val.<br />";
}
?>

Ergebnisse anzeigen:

Andere Liste von Rot.
Andere Liste von Blau.
Andere Liste von Grün .
Andere Liste von Gelb.

3. for()

#example3:

<?php
$arr= array ("0"=> "zero","1"=> "one","2"=> "two");
for ($i= 0;$i< count($arr); $i++){
$str= $arr[$i];
echo "the number is $str.<br />";
}
?>

Ergebnisse anzeigen:

Die Zahl ist Null.
Die Zahl ist Eins.
Die Zahl ist Zwei.

========= Das Folgende ist die Funktion Einführung = ========

key()

mixed key(array input_array)

key()-Funktion gibt das Schlüsselelement in input_array am zurück aktuelle Zeigerposition.

#example4

  1. <?php
    $capitals= array("Ohio"=> "Columbus","Towa"=> "Des Moines","Arizona"=> "Phoenix");
    echo "<p>Can you name the capitals of these states?</p>";
    while($key= key($capitals)) {
    echo $key."<br />";
    next($capitals);
    //每个key()调用不会推进指针。为此要使用next()函数
    }
    ?>

Ergebnisse anzeigen:

Können Sie die Hauptstädte dieser Bundesstaaten nennen?
Ohio
Towa
Arizona

reset()

mixed reset(array input_array)

Die Funktion „reset()“ wird verwendet, um den Zeiger von input_array auf zurückzusetzen die Startposition des Arrays. Diese Funktion wird häufig verwendet, wenn Sie dasselbe Array mehrmals in einem Skript anzeigen oder verarbeiten müssen. Darüber hinaus wird diese Funktion häufig am Ende der Sortierung verwendet.

#example5 – Code

<?php
$colors= array(&#39;red&#39;,&#39;blue&#39;,&#39;green&#39;,&#39;yellow&#39;);
foreach ($colorsas$color){
echo "Do you like $color? <br />";
}
reset($colors);
while(list($key,$val)= each($colors)) {
echo "$key=> $val<br />";
}
?>

an #example1 anhängen und das Ergebnis anzeigen:

Magst du Rot? ?
Magst du Blau?
Magst du Gelb?
0 => Blau
2 => 🎜 >3 => gelb

Hinweis: Durch das Zuweisen eines Arrays zu einem anderen Array wird der ursprüngliche Array-Zeiger zurückgesetzt. Wenn wir also im obigen Beispiel $colors einer anderen Variablen innerhalb der Schleife zuweisen, führt dies zu einer Unendlichkeit Schleife.
Fügen Sie beispielsweise $s1 = $colors; zur

while-Schleife

hinzu und führen Sie den Code erneut aus, und der Browser zeigt die Ergebnisse endlos an.
each()

array every(array input_array)

each()-Funktion gibt das aktuelle Schlüssel/Wert-Paar des Eingabearrays zurück und rückt den Zeiger um eine Position vor. Das zurückgegebene Array enthält vier Schlüssel, Schlüssel 0 und Schlüssel enthalten den Schlüsselnamen und Schlüssel 1 und Wert enthalten die entsprechenden Daten. Befindet sich der Zeiger vor der Ausführung von every() am Ende des Arrays, wird FALSE zurückgegeben.

#example6

<?php
$capitals= array("Ohio"=> "Columbus","Towa"=> "Des Moines","Arizona"=> "Phoenix");
$s1= each($capitals);
print_r($s1);
?>

Ergebnis anzeigen:

Array ( [1] => Columbus [Wert ] => Columbus [0] => Ohio [key] => current(), next(), end()

mixed current( array target_array)

current()-Funktion gibt den Array-Wert zurück, der sich an der aktuellen Zeigerposition von target_

array array

befindet. Im Gegensatz zu den Funktionen next(), prev() und end() bewegt current() den Zeiger nicht. Die Funktion

next() gibt den Array-Wert zurück, der an der nächsten Position des aktuellen Array-Zeigers platziert wird.

Die Funktion prev() gibt den Array-Wert zurück, der sich an der vorherigen Position des aktuellen Zeigers befindet. Wenn sich der Zeiger ursprünglich an der ersten Position des Arrays befindet, wird FALSE zurückgegeben. Die Funktion

end() bewegt den Zeiger auf die letzte Position von target_array und gibt das letzte Element zurück. #example7


<?php
$fruits= array("apple","orange","banana");
$fruit= current($fruits); //return "apple"
echo $fruit."<br />";
$fruit= next($fruits); //return "orange"
echo $fruit."<br />";
$fruit= prev($fruits); //return "apple"
echo $fruit."<br />";
$fruit= end($fruits); //return "banana"
echo $fruit."<br />";
?>
Ergebnisse anzeigen:

ApfelOrange

Apfel

banane

============ Testen wir die Geschwindigkeit von drei Array-Durchquerungen===========

Im Allgemeinen haben Durchquerungen ein Array Drei Methoden: for, while und foreach. Die einfachste und bequemste davon ist foreach. Testen wir zunächst die Zeit, die zum Durchlaufen eines
eindimensionalen Arrays

mit 50.000 Indizes benötigt wird.

Testumgebung:

Intel Core Due2 2GHz2GB 1067MHz DDR3Mac OS .6

#example8





Testergebnis:

Verwendete Zeit von:0,0228429(s)
<?php
$arr= array();
for($i= 0; $i< 50000; $i++){
$arr[]= $i*rand(1000,9999);
}
function GetRunTime()
{
list($usec,$sec)=explode(" ",microtime());
return ((float)$usec+(float)$sec);
}
######################################
$time_start= GetRunTime();
for($i= 0; $i< count($arr); $i++){
$str= $arr[$i];
}
$time_end= GetRunTime();
$time_used= $time_end- $time_start;
echo &#39;Used time of for:&#39;.round($time_used, 7).&#39;(s)<br /><br />&#39;;
unset($str, $time_start, $time_end, $time_used);
######################################
$time_start= GetRunTime();
while(list($key, $val)= each($arr)){
$str= $val;
}
$time_end= GetRunTime();
$time_used= $time_end- $time_start;
echo &#39;Used time of while:&#39;.round($time_used, 7).&#39;(s)<br /><br />&#39;;
unset($str, $key, $val, $time_start, $time_end, $time_used);
######################################
$time_start= GetRunTime();
foreach($arr as$key=> $val){
$str= $val;
}
$time_end= GetRunTime();
$time_used= $time_end- $time_start;
echo &#39;Used time of foreach:&#39;.round($time_used, 7).&#39;(s)<br /><br />&#39;;
?>

Genutzte Zeit von while:0,0544658(s)Genutzte Zeit von foreach:0,0085628(s)

Nach wiederholten Tests zeigen die Ergebnisse, dass für das Durchlaufen desselben Arrays foreach am schnellsten und while am langsamsten ist. Im Prinzip bearbeitet foreach eine Kopie des Arrays (durch Kopieren des Arrays), während while durch Verschieben des internen Indexes des Arrays arbeitet. Im Allgemeinen geht man davon aus, dass while schneller sein sollte als foreach (da foreach zuerst das Array verschiebt). wenn die Ausführung beginnt, während while den internen Zeiger direkt bewegt), aber das Ergebnis ist genau das Gegenteil. Der Grund dürfte darin liegen, dass es sich bei foreach um eine interne Implementierung von PHP handelt, während es sich bei while um eine allgemeine Schleifenstruktur handelt. Daher ist foreach in allgemeinen Anwendungen einfach und effizient. Unter PHP5 kann foreach auch die Attribute einer Klasse durchlaufen.

Das obige ist der detaillierte Inhalt vonPHP-Array-Traversal-Funktionen und ihre Verwendungszusammenfassung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn