php получает ассоциативный массив вместо обычного массива в результате функции

#php #multidimensional-array

#php #многомерный массив

Вопрос:

я создаю функцию, которая возвращает обычный массив :

 function get_list_array () {

                $list_object = get_list_objects();
                foreach ( $list_object as $every_object) {
                            $list_array[] = array (
                                          "wprm_$every_object->name" => array (
                                                     'name'         => _x("$every_object->label", , 'test'),
                                                      'singular_name' => _x("$every_object->name", , 'test'),));                                             
                      }

                        return $list_array ;

                         }

    var_dump ($list_array);

    array(2) { 
           [0]=> array(1) { ["object_1"]=> array(2) {
                                               ["name"]=> string(10) 
     "name_object1" ["singular_name"]=> string(15) "singular_name_object1" } } 
           [1]=> array(1) { ["object_2"]=> array(2) {
                                               ["name"]=> string(4) 
     "name_object2" ["singular_name"]=> string(10) "singular_name2" } } }
  

И я хочу получить на месте только ассоциативный массив, подобный этому:

   array ("object_1" => array (["name"]=> string(10) "name_object1" 
  ["singular_name"]=> string(15) "singular_name_object1" } ,
                               "object_2" => array(2) {
                                           ["name"]=> string(4) 
  "name_object2" ["singular_name"]=> string(10) "singular_name2" } } }
  

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

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

1. Можете ли вы просто выполнить print_r() вместо var_dump()? Это слишком запутанно для меня, чтобы понять его структуру.

2. конечно, ниже приведен вывод print_r: Array ( [0] => Array ( [object_1] => Array ( [name] => name_object1 [singular_name] => singular_name_object1 ) ) [1] => Array ( [object_2] => Array ( [name] => name_object2 [singular_name] => singular_name2) ) ) и я ищу что-то вот так: Массив ( [object_1] => Массив ( [name] => name_object1 [singular_name] => singular_name_object1 ) ) , [object_2] => Массив ( [name] => name_object2 [singular_name] => singular_name2) ) )

Ответ №1:

Вы оборачиваете массив, который вы на самом деле хотите, в другой массив, делая это:

 $list_array[] = array(
    "wprm_$every_object->name" => array(
  

Вместо этого вы должны просто назначить новый массив $list_array напрямую:

 $list_array["wprm_$every_object->name"] = array(
  

Также, пожалуйста, подумайте о том, какой отступ вы делаете в своем коде, потому что вау. Ваша функция может выглядеть следующим образом:

 function get_list_array () {
    $list_object = get_list_objects();

    foreach ($list_object as $every_object) {
        $list_array["wprm_$every_object->name"] = array(
            'name'          => _x("$every_object->label", , 'test'),
            'singular_name' => _x("$every_object->name", , 'test'),
        );
    }

    return $list_array;
}