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

Comment améliorer l'efficacité de la recherche d'éléments de tableau en PHP

墨辰丷
墨辰丷original
2018-05-23 09:27:211671parcourir

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

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

temps d'exécution :

1,2781620025635ms

Utiliser

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

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