#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. Чтобы упростить чтение кода, вы, вероятно, захотите, чтобы свойства массива были в отдельных строках …