laravel 如何将Stdclass对象转换为数组

epfja78i  于 2022-11-18  发布在  其他
关注(0)|答案(3)|浏览(311)

我在Laravel中使用数据库时遇到了这个问题。我如何将其转换为最简单的数组呢?

$data = DB::table('users')->get();
siv3szwd

siv3szwd1#

请尝试此操作。这将返回对象数组。

$result = json_decode(json_encode($data, true));

*已更新

如果您想将所有嵌套属性转换为数组,请尝试以下操作。

$result = json_decode(json_encode($data, true), true);
0x6upsns

0x6upsns2#

get()将返回一个集合。如果要获取对象的数组,请使用toArray()方法:

$data->toArray();

如果要将每个对象也转换为数组,请执行以下操作:

$data->map(function($i) {
    return (array)$i;
})->toArray();
lf3rwulv

lf3rwulv3#

当我使用DB::select并手动编写sql:时,我通常会遇到这个问题。

$sql = 'SELECT *
                FROM ba_pics ba
                INNER JOIN pages pgs
                    ON ba.service_page_id = pgs.id';

    $baPics = DB::select($sql);
    $baPics = json_decode(json_encode($baPics, true), true);

    return view('beforeAndAfter',['baPics'=>$baPics, 'lodata'=>'no lodata yet']);

下面是使用PHP的array_map函数的另一种方法:

$sql = 'SELECT *
                FROM ba_pics ba
                INNER JOIN pages pgs
                    ON ba.service_page_id = pgs.id';

    $baPics = DB::select($sql);

    $baPics = array_map(function($i) {
        return (array)$i;
    }, $baPics);

    return view('beforeAndAfter',['baPics'=>$baPics, 'lodata'=>'no lodata yet']);

相关问题