Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

PHP поиск в массиве

249
11 сентября 2007 года
DissDoc
639 / / 01.10.2004
У меня есть многомерный массив, например вот так
 
Код:
main => Array(one => white, two => black, three => Array(g => green, r=> red))

А как можно быстро найти секцию g? Или только перебором всего массива можно найти данную секцию/элемент?
92
11 сентября 2007 года
Тень Пса
2.2K / / 19.10.2006
функций поиска в многомерном массиве нет...
имхо только перебором
353
11 сентября 2007 года
Nixus
840 / / 04.01.2007
Цитата: DissDoc
А как можно быстро найти секцию g? Или только перебором всего массива можно найти данную секцию/элемент?


Что значит "найти секцию g"?

276
11 сентября 2007 года
Rebbit
1.1K / / 01.08.2005
Можно попробовать сериализовать масив и искать в строке-результате сериализацыи.
8
11 сентября 2007 года
mfender
3.5K / / 15.06.2005
а чем не подходит перебор в цикле?
353
11 сентября 2007 года
Nixus
840 / / 04.01.2007
Цитата: mfender
а чем не подходит перебор в цикле?


А зачем тут цикл? Тут нужен рекурсивный поиск.

8
11 сентября 2007 года
mfender
3.5K / / 15.06.2005
Цитата: Nixus
А зачем тут цикл? Тут нужен рекурсивный поиск.


Есть принципиальная разница для достижения цели?

276
11 сентября 2007 года
Rebbit
1.1K / / 01.08.2005
Код:
<?php
    $main = Array(one => white, two => black, three => Array(g => green, r=> red));
    echo search('one', $main);
    echo search('g', $main);
    echo search('ggg', $main); // return NULL

function search($key, $arr){
    if (array_key_exists($key, $arr))
        return $arr[$key];
    else {
        foreach ($arr as $val) {
            if (gettype($val) == 'array'){
                $res = search($key, $val);
                if ($res != NULL)
                    return $res;
            }
        }
        return NULL;
    }
}
   
?>

Ищет по уровнях вложености.
353
11 сентября 2007 года
Nixus
840 / / 04.01.2007
Цитата: mfender
Есть принципиальная разница для достижения цели?


Объясни как ты циклом собрался искать...
ЗЫ. Циклом сделать можно если прикрутить рукотворный стек и, возможно, механизм состояний, но зачем?

8
11 сентября 2007 года
mfender
3.5K / / 15.06.2005
А как ты собираешься из рекурсии выйти по нахождении результата?
353
11 сентября 2007 года
Nixus
840 / / 04.01.2007
Из рекурсии выйти не проблема, Rebbit привел код. А вот как ты без рекурсии вложенные массивы обходить будешь?
8
11 сентября 2007 года
mfender
3.5K / / 15.06.2005
Цитата: Nixus
Из рекурсии выйти не проблема, Rebbit привел код. А вот как ты без рекурсии вложенные массивы обходить будешь?


Я бы сделал как аз так, как предложил Rebbit. А ты, как я понял, упёрся в слово "цикл" и предлагал цикл самой функцией сделать... Может я не так понял...

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог