Maison > Article > développement back-end > 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
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]); }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('first' => null, 'second' => 4); // returns false isset($search_array['first']); // returns true array_key_exists('first', $search_array); ?>2. Utilisez implode pour vous connecter et utilisez directement strpos pour juger
/** * in_array is too slow when array is large */ public static function inArray($item, $array) { $str = implode(',', $array); $str = ',' . $str . ','; $item = ',' . $item . ','; return false !== strpos($item, $str) ? true : false; }