Maison > développement back-end > tutoriel php > 2 fonctions PHP in_array personnalisées pour résoudre le problème d'efficacité consistant à juger in_array à partir de grandes quantités de données

2 fonctions PHP in_array personnalisées pour résoudre le problème d'efficacité consistant à juger in_array à partir de grandes quantités de données

高洛峰
Libérer: 2023-03-03 22:10:01
original
1462 Les gens l'ont consulté

Mais si le tableau est relativement grand, les performances diminueront et le temps d'exécution sera plus long. Donc, si vous souhaitez optimiser pour les grands tableaux, voici deux méthodes (toutes deux implémentées via des fonctions personnalisées) :

1. Retournez la clé et la valeur du tableau, et utilisez isset pour déterminer si la clé existe dans le tableau

/**
 * in_array is too slow when array is large
 */
public static function inArray($item, $array) {
    $flipArray = array_flip($array);
    return isset($flipArray[$item]);
}
Copier après la connexion
Vous pouvez également demander pourquoi array_key_exists n'est pas utilisé pour le jugement au lieu d'utiliser isset ? Regardons la comparaison entre array_key_exists() et isset() :

isset() ne retournera pas TRUE pour les valeurs NULL dans le tableau, mais array_key_exists() le fera.

<?php
$search_array = array(&#39;first&#39; => null, &#39;second&#39; => 4);
// returns false
isset($search_array[&#39;first&#39;]);
// returns true
array_key_exists(&#39;first&#39;, $search_array);
?>
Copier après la connexion
2. Utilisez implode pour vous connecter et utilisez directement strpos pour juger


Utilisez la fonction implode pour vous connecter avec des virgules et utilisez strpos pour. juger directement. La position des chaînes en PHP est très rapide, surtout lorsque la quantité de données est importante. Il faut cependant noter que "," doit être ajouté au début et à la fin, ce qui est plus rigoureux. Par exemple : ,user1,user2,user3, lors de la recherche, recherchez ,user1,. Utilisez également strpos! == false, car le premier renverra 0. Les exemples sont les suivants :

/**
 * in_array is too slow when array is large
 */
public static function inArray($item, $array) {
    $str = implode(&#39;,&#39;, $array);
    $str = &#39;,&#39; . $str . &#39;,&#39;;
    $item = &#39;,&#39; . $item . &#39;,&#39;;
    return false !== strpos($item, $str) ? true : false;
}
Copier après la connexion


Plus de 2 fonctions PHP in_array personnalisées pour résoudre le problème d'efficacité de l'évaluation de in_array à partir de grandes quantités de données. Pour les articles connexes, veuillez faire attention. au site Web PHP chinois !


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal