@Nikelamoc

Как оптимально сделать autocomplete из обычного массива?

День добрый, есть массив метров на 10 формата Артикул => Название товара

Что-то типа такого
$array = array (
   23417 => 'Тут какое-то название товара',
   23486 => 'Тут еще какое-то название товара',
);

Как наиболее правильно сделать поиск вхождения по нему для autocomplete ?

В голову приходит что-то типа такого , но будет ли это оптимальным вариантом ?
$array = array (
   23417 => 'Тут какое-то название товара',
   23486 => 'Тут еще какое-то название товара',
);
$query = "название";
foreach($array as $key => $value) {
if (strpos($value, $query) !== false) {
    $result_array[$key] = $value;
}
}
  • Вопрос задан
  • 160 просмотров
Пригласить эксперта
Ответы на вопрос 2
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
А что, в базе хранить религия не позволяет? Ясно же что база шустрее по тексту искать будет, да еще и имея начальные символы строки.
Если для Вас "это не по-христиански" - есть мысли фигануть еще 2-3 дубля массивов, с ключами - первыми символами, а значениями - ключами исходного архива, изврат и треш конечно, но зато мгновенно и бесшумно имхо... Соответственно автокомплит начинать не с первой буквы, а скажем с 3, потом массив с ключами из 4 первых символов, а дальше уже полученный подмассив можно и по вашей схеме.
Ответ написан
Комментировать
Immortal_pony
@Immortal_pony Куратор тега PHP
Можно воспользоваться функцией array_filter.

Пример:
$array = array_filter($array, function($element) use ($query) {
    return (strpos($element, $query) !== false);
});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы