Forum Webscript.Ru
Программирование => PHP => Тема начата: sk от 25 Февраля 2005, 17:01:42
-
есть многомерный массив, например такой (см. ниже), стоит задача, из него нужно извлечь запись/записи в которых значение ячейки [first] будет иметь значение "on" (для примера). Как можно решить эту задачу без перебора всего массива?
(
[id] => 1
[first] => on
[title] => NetShop: интернет-супермаркет
[name] => home
[left_key] => 1
[right_key] => 84
[level] => 0
[template] => index
[module] => text
)
[1] => Array
(
[id] => 2
[first] => off
[title] => Помощь
[name] => help
[left_key] => 2
[right_key] => 17
[level] => 1
[template] => index
[module] => text
)
[2] => Array
(
[id] => 3
[first] => off
[title] => Я здесь впервые
[name] => help-1
[left_key] => 3
[right_key] => 4
[level] => 2
[template] => index
[module] => text
)
[3] => Array
(
[id] => 4
[first] => off
[title] => Регистрация
[name] => reg
[left_key] => 5
[right_key] => 6
[level] => 2
[template] => index
[module] => text
)
-
никак, естественно.
-
хорошо, может существует метод ускорить перебор массива? Не учитывая выход из цикла по факту нахождения искомого, на данный момент стоит задача оптимизации времени выполнения скрипта в целом, а многократный перебор массива занимает львиную часть времени
-
ба, а многократный-то зачем?
-
а о такой штучке, как база данных, никогда, случаем, не слыхивали?
-
потому и многократный чтобы в базу лишний раз не лезть, структуру сайта раз вытянул и свалил в массив, вся дальнейшая работа идет с ним, в случае когда навигационное меню на странице приходится выводить несколько раз и в разном виде получается многократный перебор
раньше скрипт работал исключительно на запросах к базе данных, но при "больших" нагрузках (например магазин с разветвленной структурой каталогов и большим количеством товаров) заметно подтормаживание, поэтому наиболее часто используемые запросы были переведена на работу с массивом, удалось добиться примерно 30% увеличения скорости, но хочется добиться максимума
-
не понял. у вас на странице выводится несколько раз список в несколько тысяч позиций?
во всех остальных случаях я себе не представляю, КАК надо изуродовать код, чтобы хоть како-ето торможение было заметно.
В любом случае, выпрямлять здесь надо не массив, а руки.