Создайте новый массив из многомерного массива

#php #arrays

Вопрос:

У меня есть следующий массив:

 Array (  [movies] =gt; WP_Post_Type Object  (  [name] =gt; movies  [label] =gt; Movies  [labels] =gt; stdClass Object  (  [name] =gt; Popular Movies  [singular_name] =gt; Movie  [add_new] =gt; Add New  [add_new_item] =gt; Add New Movie  )   [description] =gt; Movie news and reviews  )   [portfolio] =gt; WP_Post_Type Object  (  [name] =gt; portfolio  [label] =gt; Portfolio  [labels] =gt; stdClass Object  (  [name] =gt; New Portfolio Items  [singular_name] =gt; Portfolio  [add_new] =gt; Add New  [add_new_item] =gt; Add New Portfolio  )   [description] =gt; Portfolio news and reviews  )    [fruits] =gt; WP_Post_Type Object  (  [name] =gt; fruits  [label] =gt; My Fruits  [labels] =gt; stdClass Object  (  [name] =gt; My Fruits  [singular_name] =gt; Fruit  [add_new] =gt; Add New  [add_new_item] =gt; Add New Fruit  )   [description] =gt; Fruits news and reviews  )  )  

Я хотел бы включить в следующий массив:

 [  { value: 'movies', label: 'Popular Movies' },  { value: 'portfolio', label: 'New Portfolio Items' },  { value: 'fruit', label: 'My Fruits' }, ]  

Я использую цикл foreach для создания нового массива:

 // $post_types is the array   foreach ( $post_types as $post_type ) {   $post_types_array['value'] = $post_type-gt;label;  $post_types_array['label'] = $post_type-gt;name; }  

Но он возвращает только последний элемент из массива. Как можно просмотреть каждую строку массива и создать нужный массив?

Ответ №1:

Вы не создаете новые элементы массива, вы просто перезаписываете значения в том же массиве.

Кроме того, вы получаете неправильные элементы из $post_type объекта.

 $post_types_array = []; foreach ($post_types as $post_type) {  $post_types_array[] = [  'value' =gt; $post_type-gt;name,   'label' =gt; $post_type-gt;labels-gt;name  ]; }  

Комментарии:

1. Чтобы упростить чтение кода, вы, вероятно, захотите, чтобы свойства массива были в отдельных строках …