Получить все элементы в массиве из массивов категорий и подкатегорий

Я программирую на PHP, и у меня есть эти массивы:

Массив категорий:

$type = array("fruit","veggie","other");

Массивы подкатегорий:

$fruit=array("apple","orange");
$veggie=array("bean","pea");
$other=array("bread","cake");

Я могу получить все элементы подкатегорий с:

$all_elements = array_merge($fruit,$veggie,$other);

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

Я хотел бы знать, как я могу получить выражение, подобное следующему, чтобы получить тот же результат:

$all_elements = array_merge(SOMETHING($type));

Заранее спасибо!!!!!

1

Решение

Взгляни на компактный:

compact — создать массив, содержащий переменные и их значения

Итак, вы хотите сделать:

$type = array("fruit","veggie","other");
$fruit=array("apple","orange");
$veggie=array("bean","pea");
$other=array("bread","cake");

print_r(compact(($type)));

ВЫХОД

Array
(
[fruit] => Array
(
[0] => apple
[1] => orange
)

[veggie] => Array
(
[0] => bean
[1] => pea
)

[other] => Array
(
[0] => bread
[1] => cake
)

)

Тем не менее, я рекомендую вам сделать это совершенно по-другому, как предложил @Rasclatt:

$food['fruit'][]    =   'apple';
$food['fruit'][]    =   'orange';
$food['veggie'][]   =   'bean';
$food['veggie'][]   =   'pea';
$food['other'][]    =   'bread';
$food['other'][]    =   'cake';
2

Другие решения

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

$food['fruit'][]    =   'apple';
$food['fruit'][]    =   'orange';
$food['veggie'][]   =   'bean';
$food['veggie'][]   =   'pea';
$food['other'][]    =   'bread';
$food['other'][]    =   'cake';
1

Я бы расположил данные по-другому:

 $item["fruit"]=array("apple","orange");
$item["veggie"]=array("bean","pea");
$item["other"]=array("bread","cake");

Так что если вы хотите $all_elements Вы могли бы просто попросить $item вместо:

print_r ($item);

И если вы хотите определенную категорию:

print_r ($item["veggie"]);
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector