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 表达式必须是可修改的左值
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊
  • ¥15 TLS1.2协议通信解密
  • ¥40 图书信息管理系统程序编写
  • ¥20 Qcustomplot缩小曲线形状问题