Как проверить наличие в массиве определённой последовательности символов

Рейтинг: 0Ответов: 1Опубликовано: 12.12.2014
Добрый день.
Есть массив типа   [Иванов_Александр,Иванов_Пётр,Петров_Иван, Роман_Ракзин ]
как мне перебрать при поиске все значения и вывести ,например, всех, содержащих "Ив" т.е. 1,2,3 элементы?
Спасибо

Ответы

▲ 1

Вообще array_reduce применяется именно для свертки массива (может, не совсем правильный термин, сейчас не помню) - получения одного значения из всего массива - но здесь тоже сойдет, хоть это и неправильно:

<?php 
$data = ['Иванов_Александр', 'Иванов_Пётр', 'Петров_Иван', 'Роман_Ракзин'];

$reduced = array_reduce($x, function ($result, $input) {
    if (!is_array($result)) {
        $result = array();
    }
    if (mb_stripos($input, 'Ив', 0, 'UTF-8') !== false) {
        $result[] = $input;
    }
    return $result;
});
var_dump($reduced);
//
array(3) {
  [0] =>
  string(31) "Иванов_Александр"
  [1] =>
  string(21) "Иванов_Пётр"
  [2] =>
  string(21) "Петров_Иван"
}

Проблемы будут, если ив надо задавать динамически, придется либо проставлять параметры Closure (это вообще возможно?), либо использовать use, либо все-таки делать то же самое через foreach.