Т.е инбокс родитель у всех, папка ИТ родитель папки Тест, я думаю понятно. Как бы собрать его в нормальный массив чтоб сделать древовидное меню, для этого нужено знать родителя, как его вычислить?
Array
(
[0] => Array
(
[0] => INBOX
)
[1] => Array
(
[0] => INBOX
[1] => Sent
)
[2] => Array
(
[0] => INBOX
[1] => Trash
)
[3] => Array
(
[0] => INBOX
[1] => Drafts
)
[4] => Array
(
[0] => INBOX
[1] => ИТ
)
[5] => Array
(
[0] => INBOX
[1] => ИТ
[2] => Test
)
)
Спустя 5 минут, 4 секунды (23.05.2012 - 16:06) Игорь_Vasinsky написал(а):
$category = array(
'INBOX'=> array(
'child1',
'child2'
),
'NO INBOX'=> array(
'child1',
'child2',
'child3'
)
);
echo '<pre>' . print_r($category, 1) . '</pre>';
Array
(
[INBOX] => Array
(
[0] => child1
[1] => child2
)
[NO INBOX] => Array
(
[0] => child1
[1] => child2
[2] => child3
)
)
foreach($category as $key=>$value)
{
echo $key.'<br />';
foreach($value as $child)
{
echo ' -'.$child.'<br />';
}
}
INBOX
-child1
-child2
NO INBOX
-child1
-child2
-child3
Спустя 3 минуты, 27 секунд (23.05.2012 - 16:09) Renden написал(а):
Игорь_Vasinsky
Чет я не понял чем это поможет, сорри лег в 6 утра, с комметариями пожалуйста.
Смотри я пробывал так:
Результат:
А по логике надо чтоб было как-то так:
Чет я не понял чем это поможет, сорри лег в 6 утра, с комметариями пожалуйста.
Смотри я пробывал так:
$menu_array = array();
foreach($list_folders AS $key => &$value) {
foreach($value['nameA'] AS $vKey => $vVal)
$menu_array[$vKey][$key] = $vVal;
}
Результат:
Array
(
[0] => Array
(
[0] => INBOX
[1] => INBOX
[2] => INBOX
[3] => INBOX
[4] => INBOX
[5] => INBOX
)
[1] => Array
(
[1] => Sent
[2] => Trash
[3] => Drafts
[4] => ИТ
[5] => ИТ
)
[2] => Array
(
[5] => Test
)
)
А по логике надо чтоб было как-то так:
Array
(
[0] => Array
(
[1] => INBOX
)
[1] => Array
(
[1] => Sent
[2] => Trash
[3] => Drafts
[5] => ИТ
)
[5] => Array
(
[6] => Test
)
)
Спустя 1 минута, 28 секунд (23.05.2012 - 16:11) Игорь_Vasinsky написал(а):
ты спросил удобную структуру parent->child
вообще можно легко функцию написать для листинга массивов с любым уровнем вложенности. данный пример на 2у-мерном массиве, но могут быть же и подкатегории.
вообще можно легко функцию написать для листинга массивов с любым уровнем вложенности. данный пример на 2у-мерном массиве, но могут быть же и подкатегории.
Спустя 35 минут, 52 секунды (23.05.2012 - 16:47) Renden написал(а):
Игорь_Vasinsky
Цитата |
ты спросил удобную структуру parent->child |
Я спросил как вычислить родителя, функцию я думаю напишу, просто как пересобрать массив чтоб там было указано кто родитель?
Спустя 21 час, 36 минут, 59 секунд (24.05.2012 - 14:24) Renden написал(а):
Ребят нет идей как можно?
Спустя 1 день, 1 час, 46 минут, 12 секунд (25.05.2012 - 16:10) Arh написал(а):
#Твой массив
$array = array (
'0'=> array (
'0'=>'INBOX',
'1'=>'ololo'
),
'1'=> array (
'0'=>'INBOX',
'1'=>'Send'
),
'2'=> array (
'0'=>'INBOX',
'1'=>'Trash'
),
'3'=> array (
'0'=>'INBOX',
'1'=>'Drafts'
),
'4'=> array (
'0'=>'INBOX',
'1'=>'ИТ'
),
'5'=> array (
'0'=>'INBOX',
'1'=>'ИТ',
'2'=>'Test'
)
);
print_r($array);
#Попытка один
$dir[$array['0']['0']] = array();
foreach ($array as $key => $value) {
if ($key != '0') {
foreach ($array[$key] as $k => $v) {
if ($k > '0' && $k < '2' && array_search($array[$key][$k],$dir[$array['0']['0']]) != true) {
$dir[$array['0']['0']][] = $array[$key][$k];
} elseif ($k > '1') {
$id = array_search ($array[$key][$k-1],$dir[$array['0']['0']]);
$dir[$array[$key][$k-1]][] = $array[$key][$k];
}
}
}
}
print_r($dir);
unset($dir);
#Попытка два
$dir[$array['0']['0']] = array();
foreach ($array as $key => $value) {
if ($key != '0') {
foreach ($array[$key] as $k => $v) {
if ($k > '0' && $k < '2' && array_search($array[$key][$k],$dir[$array['0']['0']]) != true) {
$dir[$array['0']['0']][$array[$key][$k]] = null;
} elseif ($k > '1') {
$id = array_search ($array[$key][$k-1],$dir[$array['0']['0']]);
$dir[$array['0']['0']][$array[$key][$k-1]] = $array[$key][$k];
}
}
}
}
print_r($dir);
Код работает чисто под твой случай, во всех остальных случаях - убежит с криками <_<