Проверьте, находится ли элемент в массиве с пользовательским компаратором в PHP - PullRequest
1 голос
/ 12 августа 2011

У меня есть массив корневых доменов (например, google.com, somedomain.com, но не subdomain.domain.com), и я хочу проверить, имеет ли произвольный домен тот же корневой домен. Произвольный домен может быть subdomain.domain.com, и он будет совпадать с domain.com.

Ранее я только что отфильтровал список входных доменов, используя array_udiff и пользовательскую функцию сравнения, которую я написал. Я просто переключился на метод, где каждый входной домен должен проверяться индивидуально, я не могу просто проверить весь массив.

Вместо того, чтобы выполнять array_udiff с массивом размера 1 и проверять, не равен ли он впоследствии 0, или перебирать массив и вызывать функцию вручную, я надеялся, что уже есть функция, которая это делает. В PHP есть функция in_array, но он не позволяет использовать собственный компаратор. Существует ли такая функция?

1 Ответ

1 голос
/ 12 августа 2011

Альтернативный подход:

Храните ваши корневые домены в хэш-структуре, то есть массиве с именами доменов в качестве ключей . Таким образом вы получаете постоянный поиск по времени (например, через array_key_exists ), что важно, если вы выполняете операцию снова и снова.

Что касается сравнения, почему бы просто не убрать доменные имена для проверки всего, кроме доменного имени?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...