У меня большой массив в PHP.
Содержит строки, которые разбиты на категории с помощью подчеркивания:
category1_property
category1_category2_category3
category2_category3_category4_category5
У меня есть функция с именем
array get_values($prefix)
, который возвращает все значения массива, которые начинаются с данного префикса, например
get_values("category2_category3_");
Эта функция foreach () проходит через весь массив каждый раз, собирая все строки, начинающиеся с префикса, то есть просто
foreach ($my_array as $line)
if (substr($line, 0, strlen($prefix)) == $prefix))
array_push ($result, $line);
Мне плохо от такой производительности, особенно от того, что эта операция выполняется десятки раз за один запрос.
Кто-нибудь знает способ ускорить это, не прибегая к совершенно другому способу хранения данных?
Использование базы данных может быть быстрым и умным, но я бы хотел этого избежать. Данные поступают из файла, и я не могу перенести их в базу данных.
Предварительная сортировка или разбиение конструкции на многомерный массив или объект не вариант, потому что мне иногда нужно запросить части имени категории (например, "category1_ca *")
Заранее спасибо за любой вклад.