[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вытащить массив из массива
kollega
Подскажите как можно вытащить массив из многомерного массива. до меня чего-то не доходит.

есть многомерный массив:

$data =
Array
(
[
1] => Array
(
[
id] => 1
[parentid] => 0
[posi] => 1
[name] => Оригами
[alt_name] => origami
[descr] => Описание для категории "Оригами"
[keywords] => Ключевые слова для категории "Оригами"
[news_sort] =>
[
news_msort] =>
[
news_number] => 0
[metatitle] => Метатег title для категории "Оригами"
[level1] => 0,2,4
[level] => 0
[childs] => Array
(
[
2] => Array
(
[
id] => 2
[parentid] => 1
[posi] => 1
[name] => Об оригами
[alt_name] => aboutorigami
[descr] => Описание для категории "Об оригами"
[keywords] => Ключевые слова категории "Об оригами"
[news_sort] =>
[
news_msort] =>
[
news_number] => 0
[metatitle] => Метатег title для категории "Об оригами"
[level1] =>
[
level] => 1
)

[
4] => Array
(
[
id] => 4
[parentid] => 1
[posi] => 1
[name] => Схемы
[alt_name] => schemes
[descr] => Описание для категории "Схемы"
[keywords] => Ключевые слова для категории "Схемы"
[news_sort] =>
[
news_msort] =>
[
news_number] => 0
[metatitle] => Метатег title для категории "Схемы"
[level1] => ,5,6
[level] => 1
[childs] => Array
(
[
5] => Array
(
[
id] => 5
[parentid] => 4
[posi] => 1
[name] => Бабочки
[alt_name] => babochki
[descr] => Описание для категории "Бабочки"
[keywords] => Ключевые слова для категории "Бабочки"
[news_sort] =>
[
news_msort] =>
[
news_number] => 0
[metatitle] => Метатег title для категории "Бабочки"
[level1] =>
[
level] => 2
)

[
6] => Array
(
[
id] => 6
[parentid] => 4
[posi] => 1
[name] => Модульное оригами
[alt_name] => modulnoeorigami
[descr] => Описание для категории "Модульное оригами"
[keywords] => Ключевые слова для категории "Модульное оригами"
[news_sort] =>
[
news_msort] =>
[
news_number] => 0
[metatitle] => Метатег title для категории "Модульное оригами"
[level1] =>
[
level] => 2
)

)

)

)

)

[
3] => Array
(
[
id] => 3
[parentid] => 0
[posi] => 1
[name] => Базовые формы
[alt_name] => basicform
[descr] => Описание для категории "Базовые формы"
[keywords] => Ключевые слова категории "Базовые формы"
[news_sort] =>
[
news_msort] =>
[
news_number] => 0
[metatitle] => Метатег title для категории "Базовые формы"
[level1] => 0,7
[level] => 0
[childs] => Array
(
[
7] => Array
(
[
id] => 7
[parentid] => 3
[posi] => 1
[name] => 1 базовая форма
[alt_name] => 1basicform
[descr] => Описание для категории "1 базовая форма"
[keywords] => Ключевые слова для категории "1 базовая форма"
[news_sort] =>
[
news_msort] =>
[
news_number] => 0
[metatitle] => Метатег title для категории "1 базовая форма"
[level1] => ,8
[level] => 1
[childs] => Array
(
[
8] => Array
(
[
id] => 8
[parentid] => 7
[posi] => 1
[name] => 1.1 базовая форма
[alt_name] => 11basicform
[descr] => Описание для категории "1.1 базовая форма"
[keywords] => Ключевые слова для категории "1.1 базовая форма"
[news_sort] =>
[
news_msort] =>
[
news_number] => 0
[metatitle] => Метатег title для категории "1.1 базовая форма"
[level1] =>
[
level] => 2
)

)

)

)

)

)


и мне из него надо вытащить в переменную массив с ключом 4 , т.е массив:
[4] => Array
(
[
id] => 4
[parentid] => 1
[posi] => 1
[name] => Схемы
[alt_name] => schemes
[descr] => Описание для категории "Схемы"
[keywords] => Ключевые слова для категории "Схемы"
[news_sort] =>
[
news_msort] =>
[
news_number] => 0
[metatitle] => Метатег title для категории "Схемы"
[level1] => ,5,6
[level] => 1
[childs] => Array
(
[
5] => Array
(
[
id] => 5
[parentid] => 4
[posi] => 1
[name] => Бабочки
[alt_name] => babochki
[descr] => Описание для категории "Бабочки"
[keywords] => Ключевые слова для категории "Бабочки"
[news_sort] =>
[
news_msort] =>
[
news_number] => 0
[metatitle] => Метатег title для категории "Бабочки"
[level1] =>
[
level] => 2
)

[
6] => Array
(
[
id] => 6
[parentid] => 4
[posi] => 1
[name] => Модульное оригами
[alt_name] => modulnoeorigami
[descr] => Описание для категории "Модульное оригами"
[keywords] => Ключевые слова для категории "Модульное оригами"
[news_sort] =>
[
news_msort] =>
[
news_number] => 0
[metatitle] => Метатег title для категории "Модульное оригами"
[level1] =>
[
level] => 2
)

)

)




Спустя 6 минут, 4 секунды (25.11.2011 - 10:54) Winston написал(а):
Так ?
$array = array(...);//Многомерный массив
$array = $array[4];
reset($array);
print_r($array);

Спустя 8 минут, 17 секунд (25.11.2011 - 11:02) kollega написал(а):
не работает. он не может найти $array[4]. Как я понимаю это из за того, что он является дочерним для массива $array[1];

Спустя 4 минуты, 44 секунды (25.11.2011 - 11:07) Игорь_Vasinsky написал(а):
Свернутый текст
<?php

//Нужный ключ
$needKey = 4;



foreach($data as $key=>$arr)
foreach($key as $arr=>$needArr)
if($key == $needKey)
echo '<pre>' . print_r($needArr, 1) . '</pre>';

?>


не так?

Спустя 28 минут, 44 секунды (25.11.2011 - 11:36) kollega написал(а):
не работает(((

Спустя 3 минуты, 52 секунды (25.11.2011 - 11:40) Michael написал(а):
$data[1]['childs'][4]

Спустя 3 минуты, 10 секунд (25.11.2011 - 11:43) kollega написал(а):
Michael, Я знаю только уникальный ключ массива. В данном случае 4.

Спустя 9 минут, 54 секунды (25.11.2011 - 11:53) Michael написал(а):
Цитата (kollega @ 25.11.2011 - 10:43)
Michael, Я знаю только уникальный ключ массива. В данном случае 4.

Ты знаешь что такое рекурсия? У тебя структура - дерево. А по дереву бегают рекурсией.
Примерно:
$x = getEl($data, 4);

function getEl($arr, $id){
if (isset($arr[$id])) return $arr[$id];
elseif (isset($arr['childs'])) return getEl($arr['childs'], $id);
elseif return null;
}

Спустя 30 минут, 9 секунд (25.11.2011 - 12:23) kollega написал(а):
и снова не работает

Спустя 6 минут, 5 секунд (25.11.2011 - 12:29) Michael написал(а):
я же примерно накидал. Где твой вариант?

Спустя 7 минут, 56 секунд (25.11.2011 - 12:37) Michael написал(а):
Более верно под твою структуру как то так:
$x = getEl($data, 4);

function getEl($arr, $id){
if (isset($arr[$id])) return $arr[$id];
elseif (count($arr)) {
$ret = null;
foreach($arr as $key=>$val) {
if (isset($arr[$key]['childs'])) {
$ret = getEl($arr[$key]['childs'], $id);
if ($ret) return $ret;
}
}

}

return null;
}

Спустя 6 минут, 53 секунды (25.11.2011 - 12:44) kollega написал(а):
Michael, ты гений. Спасибо +++
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.