Laravel根据查询结果构建一个数组

时间:2016-04-19 12:03:12

标签: php laravel

这是我从查询结果中获取的一些对象

{
    {
        "name": "John",
        "notification": "sms"
    },
    {
        "name": "John",
        "notification": "email"
    },
}

从这些结果中,我想构建一个像这样的数组

{
   "name":"John",
   "notification":['email', 'sms']
}

任何可以点亮我一天的人?

1 个答案:

答案 0 :(得分:1)

假设您的原始对象是一个对象数组,如果您想要一个对象作为结果,则可以执行此操作($data是您的原始数组):

$result = (object) [ 'name' => $data[0]->name, 'notifications' => [] ];
foreach( $data as $item ) $result->notifications[] = $item->notification;

在php 7上,你也可以这样做:

$result = (object) [ 'name' => $data[0]->name, 'notifications' => array_column( $data, 'notification' ) ];

两个例子都有这个结果:

stdClass Object
(
    [name] => John
    [notifications] => Array
        (
            [0] => sms
            [1] => email
        )

)

或者,使用JSON语法:

{"name":"John","notifications":["sms","email"]}

eval.in demo