数组使用foreach变对象了

8588051

问题描述

是 toArray 的问题

            $session_list = Db::table('x_session')->get();
            $session_list = $session_list->toArray()
            //$session_list gettype 值为array
            //toArray 只是改变session_list类型吗
            $session_temp = [];
            foreach ($session_list as $key => $value) {
                //$value gettype 值为 object
            }
902 1 0
1个回答

walkor 打赏

它返回的就是对像数组,应该也可以当做数组用,试下

  • 8588051 2023-12-22

    Cannot use object of type stdClass as array

  • darcy 2023-12-25

    Db::table('x_session')->get()->toArray();
    里面的所有都变成了array

  • JaguarJack 2023-12-28

    你要使用 Model,可以把对象当做数组用,DB 的不行,就是个 StdClass 对象,当做对象用的

  • lepig 2024-10-09

    我也发现了这个问题,如果使用模型返回的是Illuminate\Database\Eloquent\Collection对象,那么使用toArray可以将下级所有的都转换为数组。如果使用DB::方式,那么使用toArray只是将最外层转换为数组,里面一层还是一个sdtClass对象。那么当使用array_map或者array_reduce这种函数的时候它是只能接受array的不接受object。

  • lepig 2024-10-09

    在补充一下,使用DB::方式返回的是Illuminate\Support\Collection,所以问题应该出在这里吧。

年代过于久远,无法发表回答
×
🔝