PHP. Поиск по массиву

183
14 апреля 2018, 19:23

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

$cities = [
'0a83d21d-11e5' => "Бабаи",
'0a83d21d-11e5' => "Бабаи1",
'0a83d21d-11e5' => "Бабаи22",
'0a83d21d-11e5' => "Бабаи33",
'0b9a89db-11e4' => "Зеленогорское",
'0befc300-11e4' => "Владимировка (Донецкая обл.)",
'0c4d5128-11e3' => "Берегомет",
'0c29a594-11e4' => "Карнауховка(Днепропетровская обл.)",
'0cbfcfd7-11e4' => "Богдановка (Кировоградская обл.)",
'0ccbf4b5-11e5' => "Ромодан",
'0d9256d1-11e5' => "Скороходово (Полтавська обл.)",
'0db17b0a-11de' => "Корюковка",
'0db17b0c-11de' => "Сосница"
]

допустим приходит ajax-запрос с таким словом Баб, нужно чтобы результат был таким:

$cities = [
'0a83d21d-11e5' => "Бабаи",
'0a83d21d-11e5' => "Бабаи1",
'0a83d21d-11e5' => "Бабаи22",
'0a83d21d-11e5' => "Бабаи33",
]

Подскажите, как сделать такой поиск в массиве?
т.е. интересует сам поиск по массиву, код php, ajax это как пример привёл

Answer 1

Например так, можно использовать регулярку.

$input = "Баб";
$cities = [
'0a83d21d-11e5' => "Бабаи",
'0a83d21d-11e5' => "Бабаи1",
'0a83d21d-11e5' => "Бабаи22",
'0a83d21d-11e5' => "Бабаи33",
'0b9a89db-11e4' => "Зеленогорское",
'0befc300-11e4' => "Владимировка (Донецкая обл.)",
'0c4d5128-11e3' => "Берегомет",
'0c29a594-11e4' => "Карнауховка(Днепропетровская обл.)",
'0cbfcfd7-11e4' => "Богдановка (Кировоградская обл.)",
'0ccbf4b5-11e5' => "Ромодан",
'0d9256d1-11e5' => "Скороходово (Полтавська обл.)",
'0db17b0a-11de' => "Корюковка",
'0db17b0c-11de' => "Сосница"
]
$pattern = "/".$input."/uism";
$output = null;
foreach ($cities as $k => $city)
   if (preg_match($pattern, $city) > 0)
       $output[$k] = $city;

Либо, чтобы работало быстрее используйте функцию substr вместо регулярных выражений

READ ALSO
Много сообщений на одно, VK LongPoll Api

Много сообщений на одно, VK LongPoll Api

Возникла проблема, при отправке одно сообщения бот отвечает кучей, я много чего перебровал, но все четно

154
как получить массив данных из trello используя cUrl

как получить массив данных из trello используя cUrl

Хочу получить данные о всех досках имеющихся в моем аккеТ

170