Автор Тема: поиск в многомерном массиве  (Прочитано 4007 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн sk

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 6
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
поиск в многомерном массиве
« : 25 Февраля 2005, 17:01:42 »
есть многомерный массив, например такой (см. ниже), стоит задача, из него нужно извлечь запись/записи в которых значение ячейки [first] будет иметь значение "on" (для примера). Как можно решить эту задачу без перебора всего массива?
  • => Array

        (
            [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
        )

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
поиск в многомерном массиве
« Ответ #1 : 25 Февраля 2005, 17:14:51 »
никак, естественно.

Оффлайн sk

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 6
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
поиск в многомерном массиве
« Ответ #2 : 25 Февраля 2005, 17:26:04 »
хорошо, может существует метод ускорить перебор массива? Не учитывая выход из цикла по факту нахождения искомого, на данный момент стоит задача оптимизации времени выполнения скрипта в целом, а многократный перебор массива занимает львиную часть времени

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
поиск в многомерном массиве
« Ответ #3 : 25 Февраля 2005, 17:44:19 »
ба, а многократный-то зачем?

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
поиск в многомерном массиве
« Ответ #4 : 25 Февраля 2005, 17:44:50 »
а о такой штучке, как база данных, никогда, случаем, не слыхивали?

Оффлайн sk

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 6
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
поиск в многомерном массиве
« Ответ #5 : 25 Февраля 2005, 17:53:08 »
потому и многократный чтобы в базу лишний раз не лезть, структуру сайта раз вытянул и свалил в массив, вся дальнейшая работа идет с ним, в случае когда навигационное меню на странице приходится выводить несколько раз и в разном виде получается многократный перебор
раньше скрипт работал исключительно на запросах к базе данных, но при "больших" нагрузках (например магазин с разветвленной структурой каталогов и большим количеством товаров) заметно подтормаживание, поэтому наиболее часто используемые запросы были переведена на работу с массивом, удалось добиться примерно 30% увеличения скорости, но хочется добиться максимума

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
поиск в многомерном массиве
« Ответ #6 : 25 Февраля 2005, 18:50:29 »
не понял. у вас на странице выводится несколько раз список в несколько тысяч позиций?
во всех остальных случаях я себе не представляю, КАК надо изуродовать код, чтобы хоть како-ето торможение было заметно.

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

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28