Forum Webscript.Ru

Программирование => PHP => Тема начата: sk от 25 Февраля 2005, 17:01:42

Название: поиск в многомерном массиве
Отправлено: 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
        )
Название: поиск в многомерном массиве
Отправлено: Меняздесьдавнонет от 25 Февраля 2005, 17:14:51
никак, естественно.
Название: поиск в многомерном массиве
Отправлено: sk от 25 Февраля 2005, 17:26:04
хорошо, может существует метод ускорить перебор массива? Не учитывая выход из цикла по факту нахождения искомого, на данный момент стоит задача оптимизации времени выполнения скрипта в целом, а многократный перебор массива занимает львиную часть времени
Название: поиск в многомерном массиве
Отправлено: Меняздесьдавнонет от 25 Февраля 2005, 17:44:19
ба, а многократный-то зачем?
Название: поиск в многомерном массиве
Отправлено: Меняздесьдавнонет от 25 Февраля 2005, 17:44:50
а о такой штучке, как база данных, никогда, случаем, не слыхивали?
Название: поиск в многомерном массиве
Отправлено: sk от 25 Февраля 2005, 17:53:08
потому и многократный чтобы в базу лишний раз не лезть, структуру сайта раз вытянул и свалил в массив, вся дальнейшая работа идет с ним, в случае когда навигационное меню на странице приходится выводить несколько раз и в разном виде получается многократный перебор
раньше скрипт работал исключительно на запросах к базе данных, но при "больших" нагрузках (например магазин с разветвленной структурой каталогов и большим количеством товаров) заметно подтормаживание, поэтому наиболее часто используемые запросы были переведена на работу с массивом, удалось добиться примерно 30% увеличения скорости, но хочется добиться максимума
Название: поиск в многомерном массиве
Отправлено: Меняздесьдавнонет от 25 Февраля 2005, 18:50:29
не понял. у вас на странице выводится несколько раз список в несколько тысяч позиций?
во всех остальных случаях я себе не представляю, КАК надо изуродовать код, чтобы хоть како-ето торможение было заметно.

В любом случае, выпрямлять здесь надо не массив, а руки.