есть многомерный массив:
$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, ты гений. Спасибо +++