С нами с 01.10.04
Сообщения: 456
Рейтинг: 149
|
Добавлено: 01/02/13 в 10:01 |
Есть вложенные категории в одномерных массивах,
где ключ соответствует уровню вложенности:
$A = array (
'0' => 'porn',
'1' => 'pics',
'2' => 'gifs'
);
$B = array (
'0' => 'porn',
'1' => 'movs',
'2' => 'avi'
);
Не являюсь профи в РНР, подскажите, пожалуйста, как перегнать это
дело во вложенный массив? Может быть есть такие функции в РНР?
Должно быть такое (ключи, соответственно, должны перекрываться, в
данном случае категория porn содержит две подкатегории pics и movs):
array $С
['porn']['pics']['gifs']
['porn']['movs']['avi']
Спасибо.
Последний раз редактировалось: alexxxus (01/02/13 в 11:47), всего редактировалось 2 раз(а)
|
|
|
|
С нами с 11.10.12
Сообщения: 428
Рейтинг: 1032
|
Добавлено: 01/02/13 в 10:31 |
По сути не может быть такого, что индексы в $A или $B начинаются не с 0, или между индексами есть пропуски. Поэтому принудительная индексация не нужна, $A и $B - просто списки.
Код: | $A = array (
'porn', 'pics', 'gifs'
);
$B = array (
'porn', 'movs', 'avi'
);
function merge_into( &$C, $a){
$p =& $C;
foreach ($a as $v){
if (!array_key_exists($v,$p)) $p[$v] = array();
$p =& $p[$v];
}
}
$C = array();
merge_into($C,$A);
merge_into($C,$B);
print_r($C); |
|
|
apache, bash, css, elasticsearch, ffmpeg, html, js, mysql, mongo, nginx, php; *nix only
|
4
|
|
|
С нами с 09.03.09
Сообщения: 6053
Рейтинг: 3538
|
Добавлено: 01/02/13 в 10:59 |
Код: | $a = [
['porn', 'pics', 'gifs', 1],
['porn', 'pics', 'jpg', 2],
['porn', 'pics', 'jpg', 3],
['porn', 'movs', 'flv', 4],
['porn', 'movs', 'avi', 5],
['not porn', 'pics', 'gifs', 6]
];
$b = [];
foreach($a as $c) {
if( ! isset($b[$c[0]]))
$b[$c[0]] = [];
if( ! isset($b[$c[0]][$c[1]]))
$b[$c[0]][$c[1]] = [];
if( ! isset($b[$c[0]][$c[1]][$c[2]]))
$b[$c[0]][$c[1]][$c[2]] = [];
$b[$c[0]][$c[1]][$c[2]][] = $c[3];
}
echo '<pre>'.print_r($b, 1).'</pre>';
/*
$b = [
'porn' => [
'pics' => [
'gifs' => [1]
'jpg' => [2, 3]
],
'movs' => [
'flv' => [4]
'avi' => [5]
]
],
'not porn' => [
'pics' => [
'gifs' => [6]
]
]
]
*/ |
|
|
|
|
С нами с 01.10.04
Сообщения: 456
Рейтинг: 149
|
Добавлено: 01/02/13 в 11:23 |
Класс. Огромное спасибо за помощь. Оценки максимальные выставил всем.
|
|
|
|
Текстовая реклама в форме ответа Заголовок и до четырех строчек текста Длина текста до 350 символов Купить рекламу в этом месте! |
|
Спонсор раздела
|