dsq2015 2019-03-10 16:04
浏览 42
已采纳

php得到关联数组作为函数的结果正常数组

i create function who return normal array :

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" } } }

And i want the get in place just the associative array like this:

  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" } } }

any idea how i can modify my function in order the get the second output.

  • 写回答

1条回答 默认 最新

  • dongshuiga2826 2019-03-10 16:19
    关注

    You're wrapping the array you actually want into another array by doing this:

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

    Instead, you should simply assign the new array to $list_array directly:

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

    Also, please think about how you indent your code, because wow. Your function could look like this:

    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;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?