В PHP есть функция типа stristr, но для массивов?

В принципе, у меня есть массив строк для поиска. Если бы это была только одна строка, stristr бы отлично. Однако, поскольку это массив, единственное, что я могу придумать, – просто запустить цикл foreach и stristr строка из каждой итерации.

Жаль, что есть лучший способ сделать это, я просто этого не знаю. Может кто-нибудь помочь мне здесь?

EDIT :

Например, скажем, у меня есть этот массив:

$array = array("string1", "foo", "bar", doowop");

и эта строка:

$string = "aw dang man lets go to that bar";

Мне нужно выяснить, содержит ли $string одну из строк массива.

Solutions Collecting From Web of "В PHP есть функция типа stristr, но для массивов?"

Ну, вам нужно будет пройти через массив, поскольку точкой функции stristr является возвращаемое значение.

Ближайшим является array_search ( docs ), но он не array_search регистр. Или array_keys ( docs ). Вы не говорите, что хотите – первый будет останавливаться, как только найдет совпадение; последний вернет все матчи.

Вы можете использовать обратный вызов. Для примера существуют такие функции, как array_map или array_walk или array_walk_recursive . Взгляните на http://ch2.php.net/manual/de/book.array.php

Надеюсь, это поможет.

Есть array_search и array_search но оба они чувствительны к регистру. Вы можете сделать это так:

 $new_array = array_flip($your_array); //exchange keys for values $new_array = array_change_key_case($new_array); // lowercases everything $new_array = array_flip($new_array); // exchanges your values back $your_key = array_search($needle, $new_array); $original_value = $your_array[$your_key]; 

Не знаю, действительно ли это намного лучше, чем просто цикл:

Вы можете рассмотреть функцию preg_grep, и я думаю, что это точно решит вашу проблему. Вы также можете взглянуть на функции array_map , array_walk , array_walk_recursive , substr_count , array_search и in_array, если preg_grep не решит вашу проблему.