Вопрос производительности PHP: быстрее оставлять дубликаты в массиве, в котором будет выполняться поиск, или делать array_unique?

У меня есть код, который добавляет значения в массив. Позже этот массив ищется в другой части моего кода. Значения, которые добавляются в массив, не обязательно уникальны, поэтому в массиве, в котором выполняется поиск, могут быть повторяющиеся значения. С технической точки зрения, даже при наличии дубликатов в просматриваемом массиве мой код работает нормально, и я смогу найти значение. Я просто хочу знать, находится ли значение в массиве, в котором выполняется поиск, и мне все равно, находится ли оно в массиве 1 раз или 10 000 раз.

Мой вопрос в том, предпочтительнее ли (по соображениям производительности и / или стиля) использовать выполните array_unique () в моем массиве, в котором выполняется поиск, прежде чем я выполню поиск.

Так, например, предположим, я хочу выполнить поиск в таком массиве:

$searchMe = Array("dog", "cat", "mouse", "dog", "dog", "dog");

Обратите внимание, что слово «собака» присутствует 4 раза. Если я хочу найти значение «dog» в этом массиве, оно будет работать нормально, и я смогу сказать, что оно присутствует. Как упоминалось выше, меня не волнует, сколько раз он присутствует, я просто хочу знать, присутствует ли он вообще.

Так следует ли мне сделать это сначала перед поиском, а затем искать в де-дублированном массиве?

$searchMe_cleaned = array_unique($searchMe);

То есть, будет ли это быстрее, чем просто поиск в массиве с дубликатами?

Имейте в виду, что хотя в этом примере в массиве, в котором выполняется поиск, всего несколько элементов, в реальном массиве, в котором выполняется поиск, могут быть сотни или тысячи элементов.

Спасибо!

6
задан Travitron 18 February 2011 в 00:41
поделиться