Maison >développement back-end >tutoriel php >Comment améliorer l'efficacité en recherchant des éléments de tableau via PHP
php trouve 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 VRAI alors in_array( ) La fonction vérifie également si le type d'aiguille est le même que celui de la botte de foin
Valeur de retour
Si l'aiguille est trouvée, elle renvoie TRUE, sinon il renvoie FALSE .
Lorsque la botte de foin du tableau de comparaison est grande, l'efficacité in_array sera très faible
Exemple : il y a 100 000 paires in_array Le tableau des éléments est comparé 1000 fois
<?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; }?>
temps d'exécution :2003.6449432373ms
Utilisez in_array pour déterminer si l'élément existe, en comparant 1 000 fois dans un tableau de 100 000 éléments, le temps d'exécution prend environ 2 secondes
Nous pouvons utiliser <.>array_flip d'abord Échangez les valeurs des clés, puis utilisez la méthode isset pour déterminer 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, 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; }?>exécuter time :
1,2781620025635ms
Utilisezarray_flip et isset pour déterminer si l'élément existe, comparez 1 000 fois dans un tableau de 100 000 éléments, et run Le temps prend environ 1,2 ms
Par conséquent, pour comparer de grands tableaux, utiliser array_flip avec la méthode isset sera meilleur que in_arrayBeaucoup plus efficace.
Explication sur le mode strict de MySQL Mode strict
Problèmes que les novices peuvent facilement ignorer lors de l'utilisation d'exploser pour diviser des chaînes dans Explication PHP
Explication sur la méthode de données à deux colonnes dans la table d'échange MySQL
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!