drjmrg8766 2014-01-13 06:10
浏览 29
已采纳

将stdClass对象转换为多维数组

I have $positions stdClass Object as below

Array
(
    [0] => stdClass Object
        (
            [id] => 2
            [position] => am
            [label] => Account Manager
        )

    [1] => stdClass Object
        (
            [id] => 6
            [position] => agn
            [label] => Agent
        )

    [2] => stdClass Object
        (
            [id] => 5
            [position] => bdev
            [label] => Business Development
        )

    [3] => stdClass Object
        (
            [id] => 4
            [position] => fin
            [label] => Finance
        )

    [4] => stdClass Object
        (
            [id] => 1
            [position] => hr
            [label] => Human Resource
        )

    [5] => stdClass Object
        (
            [id] => 3
            [position] => it
            [label] => Information Technology
        )

)

I want to convert it as an multidimensional array so I beed ut to return it into a function and reuse it as per need.. something like below

array(

    array (
        'id' => 1,
        'position' => 'admin',
        'label' => 'Administrator'
    ),

    array (
        'id' => 2,
        'position' => 'am',
        'label' => 'Account Manager'
    ),

    array (
        'id' => 3,
        'position' => 'hr',
        'label' => 'Human Resource'
    ),
);

I am not sure what exactly array form would be but I want to return array so I can get entire table and than can use it into the system.

I have tried below but it is not giving output as I want

foreach($positions as $position){
    $array[] = $position->id;
    $array[] = $position->label;
    $array[] = $position->position;
}

echo '<pre>',print_r($array),'</pre>';

Output

Array
(
    [0] => 2
    [1] => Account Manager
    [2] => am
    [3] => 6
    [4] => Agent
    [5] => agn
    [6] => 5
    [7] => Business Development
    [8] => bdev
    [9] => 4
    [10] => Finance
    [11] => fin
    [12] => 1
    [13] => Human Resource
    [14] => hr
    [15] => 3
    [16] => Information Technology
    [17] => it
)

This is obvious output but I need to know how can I get return multidimensional array.

  • 写回答

3条回答 默认 最新

  • dream0776 2014-01-13 06:16
    关注

    Your result is flat array because you're adding your elements into array via []. To fix that, add elements as array to your main array, like:

    foreach($positions as $position)
    {
        $array[] = [
           'id'      => $position->id,
           'label'   => $position->label,
           'position'=> $position->position
        ];
    }
    

    In PHP<5.4 there's no possibility to use [] for array definition, so then use array() instead.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 删除虚拟显示器驱动 删除所有 Xorg 配置文件 删除显示器缓存文件 重启系统 可是依旧无法退出虚拟显示器
  • ¥15 vscode程序一直报同样的错,如何解决?
  • ¥15 关于使用unity中遇到的问题
  • ¥15 开放世界如何写线性关卡的用例(类似原神)
  • ¥15 关于并联谐振电磁感应加热
  • ¥60 请查询全国几个煤炭大省近十年的煤炭铁路及公路的货物周转量
  • ¥15 请帮我看看我这道c语言题到底漏了哪种情况吧!
  • ¥66 如何制作支付宝扫码跳转到发红包界面
  • ¥15 pnpm 下载element-plus
  • ¥15 解决编写PyDracula时遇到的问题