Поиск иглы in_array с использованием пользовательской функции сравненияPhp

Кемеровские программисты php общаются здесь
Anonymous
Поиск иглы in_array с использованием пользовательской функции сравнения

Сообщение Anonymous »

После поиска некоторого вопроса по этому вопросу о этой проблеме я мог бы найти только это и это, но оба не разрешают отправлять аргумент (игла) в функцию поиска, но используя предварительно определенную функцию и используя array_filter .
Я ищу in_array , но не нашел.

Код: Выделить всё

function uin_array($haystack, $needle, $compareFunc)
Мне удается реализовать его с помощью Simple Foreach loop:

Код: Выделить всё

function uin_array($haystack, $needle, $compareFunc) {
foreach($haystack as $e) {
if ($compareFunc($needle, $e) == 0)
return true;
}
return false;
}
< /code>
Пример: < /p>
$found = uin_array(["AA", "BB", "CC", "DD"], "cc", "strcasecmp");
Это также можно использовать при поиске в многомерном массиве. /> edit :
Я знаю, что я могу использовать array_filter as: current (array_filter ($ haystack, function ($ element) Использование ($ guet) {...}) , но это (n) в каком -то (strong>. O (n) только в худшем случае, но не все)
edit 2
от php 8 мы имеем функцию array_any

Подробнее здесь: https://stackoverflow.com/questions/557 ... n-function

Вернуться в «Php»