You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel返回数组元素附带#数字标识的问题咨询

解决Laravel中DB::select返回数据显示对象标识的问题

嘿,我懂你看到那些{#1039}这类标识时的疑惑——别慌,这绝对不是你的数据库数据里自带的内容,只是Laravel调试工具dd()用来区分不同对象实例的内部引用ID而已!

为什么会出现这些标识?

当你使用DB::select()执行原生SQL查询时,Laravel会返回一个stdClass对象的数组,而不是关联数组。那些#后面的数字是每个对象在内存中的唯一标识,dd()工具把它显示出来,是为了帮你在调试时区分开不同的对象实例,但这些标识完全不会出现在实际的业务数据里。

如果你想要纯关联数组(去掉对象标识的显示)

有几种简单的方法可以把返回的对象数组转换成关联数组:

方法1:手动转换对象为数组

修改你的getFormAdress方法,用array_map把每个对象转成数组:

public static function getFormAdress() {
    $co = DB::select('SELECT * FROM form_adress');
    // 将每个stdClass对象转换为关联数组
    return array_map(fn($item) => (array)$item, $co);
}

方法2:用JSON编码解码快速转换

这是一种更简洁的方式,适合快速转换:

public static function getFormAdress() {
    $co = DB::select('SELECT * FROM form_adress');
    return json_decode(json_encode($co), true);
}

方法3:使用Eloquent模型(推荐)

如果你已经创建了对应的Eloquent模型(比如FormAdress),直接用模型查询会更符合Laravel的最佳实践,而且可以轻松转成数组:

// 假设你有App\Models\FormAdress模型
public static function getFormAdress() {
    return \App\Models\FormAdress::all()->toArray();
}

重要提示

其实这些标识完全不会影响你正常使用数据!就算你不转换,在Blade模板里依然可以通过$item->name来访问对象的属性,这些{#xxx}只是调试输出的视觉元素,不是数据的一部分。

内容的提问来源于stack exchange,提问作者anum ali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:45:27