Maison >développement back-end >tutoriel php >Comment améliorer l'efficacité de la recherche d'éléments de tableau en PHP
Cet article présente principalement comment améliorer l'efficacité de la recherche d'éléments de tableau en PHP, qui a une bonne valeur de référence. Les amis intéressés peuvent s'y référer, j'espère que cela sera utile à tout le monde.
1.php description de la méthode in_array
PHP détecte si un élément du tableau existe. Généralement, la méthode in_array est utilisée.
bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )
Description du paramètre :
aiguille
La valeur à rechercher. Si l'aiguille est une chaîne, la comparaison est sensible à la casse.
botte de foin
Tableau utilisé pour la comparaison
strict
Si la valeur du troisième paramètre strict est TRUE, la fonction in_array() vérifiera également si le type d'aiguille est le même que celui dans haystack
Valeur de retour
Renvoie VRAI si l'aiguille est trouvée, sinon renvoie FALSE.
2. Efficacité de la recherche d'éléments in_array
Lorsque la botte de foin du tableau de comparaison est grande, l'efficacité de in_array sera très faible
Exemple : utilisez in_array pour effectuer 1 000 comparaisons sur un tableau de 100 000 éléments
<?php $arr = array(); // 创建10万个元素的数组 for($i=0; $i<100000; $i++){ $arr[] = $i; } // 记录开始时间 $starttime = getMicrotime(); // 随机创建1000个数字使用in_array比较 for($j=0; $j<1000; $j++){ $str = mt_rand(1,99999); in_array($str, $arr); } // 记录结束时间 $endtime = getMicrotime(); echo 'run time:'.(float)(($endtime-$starttime)*1000).'ms<br>'; /** * 获取microtime * @return float */ function getMicrotime(){ list($usec, $sec) = explode(' ', microtime()); return (float)$usec + (float)$sec; } ?>
durée d'exécution : 2003,6449432373 ms
Utilisez in_array pour déterminer si un élément existe. Comparez 1 000 fois dans un tableau de 100 000 éléments. Le temps d'exécution prend environ 2 secondes
<.>3. Méthodes pour améliorer l'efficacité de la recherche d'éléments
Nous pouvons d'abord utiliserarray_flip pour l'échange clé-valeur, puis utiliser le isset méthode. Déterminez si l'élément existe, ce qui peut améliorer l'efficacité.
Exemple : utilisez array_flip pour effectuer d'abord un échange clé-valeur, puis utilisez la méthode isset pour juger et comparez 1 000 fois dans un tableau de 100 000 éléments
<?php $arr = array(); // 创建10万个元素的数组 for($i=0; $i<100000; $i++){ $arr[] = $i; } // 键值互换 $arr = array_flip($arr); // 记录开始时间 $starttime = getMicrotime(); // 随机创建1000个数字使用isset比较 for($j=0; $j<1000; $j++){ $str = mt_rand(1,99999); isset($arr[$str]); } // 记录结束时间 $endtime = getMicrotime(); echo 'run time:'.(float)(($endtime-$starttime)*1000).'ms<br>'; /** * 获取microtime * @return float */ function getMicrotime(){ list($usec, $sec) = explode(' ', microtime()); return (float)$usec + (float)$sec; } ?>temps d'exécution :
1,2781620025635ms
Utiliserarray_flip avec isset Pour déterminer si un élément existe, comparez 1000 fois dans un tableau de 100 000 éléments, le temps d'exécution prend environ 1,2 millisecondes
Par conséquent, pour comparer de grands tableaux, utilisez Les méthodes array_flip et isset sont bien plus efficaces que in_array.
Recommandations associées :php Éléments du tableauComment supprimer rapidement les doublons
Comment utiliser array_sum() pour calculer la somme des éléments de tableauvaleurs
Accès aux éléments de tableau en php guillemets doubles Comment gérer les rapports d'erreurs
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!