PHP-Array-Traversal-Methoden und Effizienzvergleich

伊谢尔伦
Freigeben: 2023-03-04 20:40:01
Original
1298 Leute haben es durchsucht

In diesem Artikel werden hauptsächlich list(), every() und eine Zusammenfassung verschiedener Methoden zum Durchlaufen von Arrays in PHP vorgestellt. Der Schwerpunkt dieses Artikels liegt auf der Erläuterung der Verwendung dieser Methoden und zugehörigen Effizienzvergleichen für diejenigen, die sie benötigen. Freunde können darauf verweisen.

foreach durchläuft das Array

Wenn wir ein Array verwenden, müssen wir häufig das Array durchqueren und jeden Schlüssel- oder Elementwert abrufen. PHP bietet einige Funktionen, die das Array speziell durchqueren. Hier stellen wir zunächst die Verwendung der Array-Traversalfunktion foreach vor.

Strukturform:

foreach ( array_expression as $value ) statement
/* array_expression是要遍历的数组
   as作用是将数组的值赋给$value
   statement是后续语句
*/
Nach dem Login kopieren

Beispiel 1:

<?php
 &#39;白色&#39; ,
  &#39;black&#39; => &#39;黑色&#39; ,
  &#39;red&#39; => &#39;红色&#39; ,
  &#39;green&#39; => &#39;绿色&#39;,
  &#39;yellow&#39; => &#39;黄色&#39;);
 foreach( $color as $c) echo $c ."
";    
?>
Nach dem Login kopieren

Mit foreach kann nicht nur der Wert des Elements, sondern auch der Schlüsselname ermittelt werden , die Strukturform:

foreach ( array_expression as $key => $value ) statement
Nach dem Login kopieren

Ändern Sie den Code in Zeile 7 im obigen Beispiel:

foreach( $color as $c) echo $c ."<br>";
Nach dem Login kopieren

in:

foreach( $color as $key => $c) echo $key.$c ."<br>";
Nach dem Login kopieren

for durchläuft das Array

Zusätzlich zu einigen der vordefinierten Array-Durchlauffunktionen in PHP können wir auch die Schleifenfunktion der for-Anweisung zum Durchlaufen des verwenden Array erstellen und ausgeben. Nachfolgend finden Sie ein Beispiel:

<?php 
 $a[]="张学友"; /* 定义数组 */
 $a[]="刘德华";
 $a[]="黎明";
 $a[]="郭富城";
 $s=count($a); /* 统计数组个数 */
 for($i=0;$i<$s;$i++){ /* 遍历数组 */
  echo $a[$i] ."<br /-->"; /* 显示数组 */
 }
?>
Nach dem Login kopieren

while() wird in Verbindung mit list() und every() verwendet, um das Array

zu durchlaufen. Das verwendete Syntaxformat lautet wie folgt:

<?php 
    $urls= array(&#39;aaa&#39;,&#39;bbb&#39;,&#39;ccc&#39;,&#39;ddd&#39;); 
    while(list($key,$val)= each($urls)) { 
      echo "This Site url is $val.<br />"; 
    } 
?>
Nach dem Login kopieren

Testen wir die Geschwindigkeit mehrerer Array-Durchquerungen

Im Allgemeinen gibt es drei Methoden zum Durchlaufen eines Arrays: 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.

<?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;;
?>
Nach dem Login kopieren

Testergebnisse:

Used time of for:0.0228429(s)
Used time of while:0.0544658(s)
Used time of foreach:0.0085628(s)
Nach dem Login kopieren

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 Index 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.

Ich hoffe, dieser Artikel ist für alle hilfreich.

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!