Слияние массива Foreach

Я пытаюсь объединить несколько массивов с циклом foreach. wp_get_nav_menu_items () Функция возвращает объект массива путем заполнения имени меню. С помощью моего цикла я хочу добавить все элементы массива из 3 меню вместе.

$menus = array( 'menu 1', 'menu 2', 'menu 3' );
foreach( $menus as $key => $menu ) {
$menu_object    = wp_get_nav_menu_items( esc_attr( $menu ) );
$menu_objects[]     = $menu_object;
}

Но с моим текущим кодом я получаю следующий результат:

Array
(
[0] => Array
(
[0] => WP_Post Object
(
[ID] => 397
)
)
[1] => Array
(
[0] => WP_Post Object
(
[ID] => 112
)
)
)

И мне нужно это:

Array
(
[0] => WP_Post Object
(
[ID] => 397
)
[1] => WP_Post Object
(
[ID] => 112
)
[2] => WP_Post Object
(
[ID] => 136
)
)

Поэтому я попытался использовать array_merge в цикле, но это не работает.

$menus = array( 'menu 1', 'menu 2', 'menu 3' );
foreach( $menus as $key => $menu ) {
$menu_object    = wp_get_nav_menu_items( esc_attr( $menu ) );
$menu_objects   = array_merge( $menu_objects, $menu_object );
}

1

Решение

Почему бы просто не изменить эту строку, чтобы получить объект:

$menu_object = wp_get_nav_menu_items( esc_attr( $menu ) );

Попробуйте что-то вроде:

$menu_object = wp_get_nav_menu_items( esc_attr( $menu ) )[0];
0

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

Мне нужно было только указать $ menu_objects как массив:

$menus = array( 'menu 1', 'menu 2', 'menu 3' );
$menu_objects = array();
foreach( $menus as $key => $menu ) {
$menu_object    = wp_get_nav_menu_items( esc_attr( $menu ) );
$menu_objects   = array_merge( $menu_objects, $menu_object );
}
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector