Maison >développement back-end >tutoriel php >Comment améliorer l'efficacité en recherchant des éléments de tableau via PHP

Comment améliorer l'efficacité en recherchant des éléments de tableau via PHP

jacklove
jackloveoriginal
2018-06-09 09:50:112526parcourir

1.php in_array method description

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 .

2. Efficacité de la recherche d'éléments In_array

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 &#39;run time:&#39;.(float)(($endtime-$starttime)*1000).&#39;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

3 méthodes pour améliorer l'efficacité de la recherche d'éléments

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 &#39;run time:&#39;.(float)(($endtime-$starttime)*1000).&#39;ms<br>';/**
 * 获取microtime
 * @return float
 */function getMicrotime(){
    list($usec, $sec) = explode(' ', microtime());    return (float)$usec + (float)$sec;
}?>
exécuter time :

1,2781620025635ms

Utilisez

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

Cet article explique comment améliorer l'efficacité de la recherche d'éléments de tableau via PHP Pour plus de contenu connexe, veuillez prêter attention au site Web chinois de PHP.

Recommandations associées :

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!

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