Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> разбить массив 
:(
    Опции темы
Gold Dragon
Дата 25.5.2009, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



есть массив типа
Код

Array
(
    [0] => Array
        (
            [id] => 1
            [parent ] => 0
            [name] => Автомобили
        )

    [1] => Array
        (
            [id] => 2
            [parent ] => 0
            [name] => Безопасность
        )

    [2] => Array
        (
            [id] => 3
            [parent ] => 0
            [name] => Бизнес и финансы
        )
***
    [32] => Array
        (
            [id] => 33
            [parent ] => 1
            [name] => Автозапчасти – производство продажа
        )

    [33] => Array
        (
            [id] => 34
            [parent ] => 1
            [name] => Автокосметика
        )

    [34] => Array
        (
            [id] => 35
            [parent ] => 1
            [name] => Автомобили грузовые
        )
***
    [61] => Array
        (
            [id] => 62
            [parent ] => 2
            [name] => Безопасность информационная
        )

    [62] => Array
        (
            [id] => 63
            [parent ] => 2
            [name] => Безопасность личная
        )

    [63] => Array
        (
            [id] => 64
            [parent ] => 2
            [name] => Безопасность радиационная
        )

    [64] => Array
        (
            [id] => 65
            [parent ] => 2
            [name] => Безопасность экономическая
        )
***
    [75] => Array
        (
            [id] => 76
            [parent ] => 3
            [name] => Аудиторские услуги
        )

    [76] => Array
        (
            [id] => 77
            [parent ] => 3
            [name] => Аукционы
        )

    [77] => Array
        (
            [id] => 78
            [parent ] => 3
            [name] => Банки зарубежные
        )
***
)

необходимо разбить массивы (или сделать выборку) по [parent ].


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
primesite
Дата 25.5.2009, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 19.5.2009

Репутация: нет
Всего: нет



так ?

Код

$by_parents = array();

foreach ($array as $item) {
    $by_parents[$item['parent']][] = $item;
}

PM MAIL WWW   Вверх
Gold Dragon
Дата 26.5.2009, 08:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



это явно что-то не то... получается какае-то бесконечнае арифметическая прогрессия массивов


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
NLspieler
Дата 26.5.2009, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: 16
Всего: 19



Если я правильно понял, то нужно получить элементы массива, в которых parent_id соответствует определенному номеру?

Тогда эта функция должна помочь:

Код

<?php

function by_parent ($your_array , $parent_id)
{
    foreach ($your_array as $value)
    {
        if ($value['parent']==$parent_id) 
        {
            $return[] = $value ;
        }
    }
    
    return $return ;
}

$new_array = by_parent ($your_array , 2) ;
?>


Если не то, то тогда приведи пример выборки, какой должен получится результат.

Это сообщение отредактировал(а) NLspieler - 26.5.2009, 09:05
PM MAIL   Вверх
Gold Dragon
Дата 26.5.2009, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



наверное я не с того начал...  У меня в базе есть список ЧЕГО-ТО, у которого есть ID и есть родитель(parent), т.е. вложенная структура. Всё это в массив и помещается подряд. Может мне сразу из базы эти данные вынимать в "нормальном" виде? может так проще?

по функции... наверное не то. Во-первых, нужно вынимать все записи, а значит нужно ещё где-то цикл делать. Во-вторых, каждый раз нужно перебирать заново весь массив.. это как-то не продуктивно smile


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
NLspieler
Дата 26.5.2009, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: 16
Всего: 19



Ну тогда наверное подайдет такой массив:

$array[parent][номер записи] = array ([id] => 1 [name] => Автомобили) ;

перебирать нужно только один раз, впоследствии обращатся можно просто по номеру парент.


Код

<?php

function by_parent ($your_array)
{
    foreach ($your_array as $value)
    {
            $parent_id = $value['parent'] ;
            $return[$parent_id][] = $value ;
    }
    
    return $return ;
}

$new_array_by_parent = by_parent ($your_array) ;

$array = $new_array_by_parent[10] ; // выбрать записи с parentom 10
?>





Это сообщение отредактировал(а) NLspieler - 26.5.2009, 10:45
PM MAIL   Вверх
gta4kv
Дата 26.5.2009, 10:55 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



Вот тоже как то с выводом дерева разбирался: http://forum.vingrad.ru/forum/topic-209674...25BE/index.html (последний пост, рабочее решение)
PM MAIL   Вверх
Gold Dragon
Дата 26.5.2009, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



NLspieler, именно то что доктор прописал!!! Спасибо!


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0734 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.