Maison  >  Article  >  développement back-end  >  Méthodes de traversée de tableaux PHP et comparaison de l'efficacité

Méthodes de traversée de tableaux PHP et comparaison de l'efficacité

伊谢尔伦
伊谢尔伦original
2017-01-16 14:19:351292parcourir

Cet article présente principalement list(), each() et while résumé de plusieurs méthodes de bouclage dans des tableaux en PHP. L'objectif de cet article est d'expliquer l'utilisation de ces méthodes et les comparaisons d'efficacité associées pour ceux qui en ont besoin. Les amis peuvent s'y référer.

foreach parcourt le tableau

Lorsque nous utilisons un tableau, nous devons souvent parcourir le tableau et obtenir chaque clé ou valeur d'élément. PHP fournit certaines fonctions qui traversent spécifiquement le tableau. Ici, nous introduisons d’abord l’utilisation de la fonction de parcours de tableau foreach.

Forme structurelle :

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

Exemple 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 ."
";    
?>

Non seulement la valeur de l'élément mais également le nom de la clé peuvent être obtenus via foreach , la forme structurelle :

foreach ( array_expression as $key => $value ) statement

Changez le code de la ligne 7 dans l'exemple ci-dessus :

foreach( $color as $c) echo $c ."<br>";

par :

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

for traverse le tableau

En plus de certaines fonctions de parcours de tableau prédéfinies en PHP, nous pouvons également utiliser la fonction de boucle de l'instruction for pour parcourir le tableau et sortez-le. Un exemple est donné ci-dessous :

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

while() est utilisé en conjonction avec list() et each() pour parcourir le tableau

Le format de syntaxe utilisé est le suivant :

<?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 />"; 
    } 
?>
. 🎜>

Testons la vitesse de plusieurs parcours de tableaux

Généralement, il existe trois méthodes pour parcourir un tableau, for, while et foreach. Le plus simple et le plus pratique d'entre eux est foreach. Testons d'abord le temps nécessaire pour parcourir un tableau unidimensionnel de 50 000 indices.
<?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;;
?>

Résultats des tests :
Used time of for:0.0228429(s)
Used time of while:0.0544658(s)
Used time of foreach:0.0085628(s)

Après des tests répétés, les résultats montrent que pour parcourir le même tableau, foreach est le plus rapide et le plus lent est while. En principe, foreach opère sur une copie du tableau (en copiant le tableau), tandis que while opère en déplaçant l'index interne du tableau. De manière générale, on pense que while devrait être plus rapide que foreach (car foreach déplace d'abord le tableau. quand il commence à s'exécuter, tandis que while déplace le pointeur interne directement), mais le résultat est tout le contraire. La raison devrait être que foreach est une implémentation interne de PHP, tandis que while est une structure de boucle générale. Par conséquent, dans les applications générales, foreach est simple et efficace. Sous PHP5, foreach peut également parcourir les attributs d'une classe.

J'espère que cet article sera utile à tout le monde.
Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn