如何在php中创建一个stdobj数组?

时间:2015-11-10 11:37:37

标签: php arrays laravel eloquent

在laravel中,DB上的get()方法返回一个stdObjs数组, 例如这一个:

$designers = DB::table('designers')->get();

将设计器表中的所有设计器作为stdObj数组返回。

现在我想用这样的东西手动创建一个stdObjs数组:

public function index()
    {

        $id = Auth::id();

        $user = User::find($id);

        foreach ($user->owned_item as $i) {          

                $result = new \stdClass(); 
                $result->type => $i->Item_type->type,
                $result->color => $i->Item_color->color


        }
很明显,代码会在每个周期覆盖$ result obj,问题是,如何创建一个我需要的所有stdobj数组呢?

1 个答案:

答案 0 :(得分:3)

在每个项目的循环执行结束之前,您需要将它们分配给数组。

$objs = [];

foreach (...) {
    $obj = new \stdClass();

    ...

    $objs[] = $obj;
}

在循环之后,$objs变量包含一个包含在foreach循环内创建的对象的数组。

编辑:如果要为每个对象设置特定的数组键,可以使用

$objs[$key_here] = $obj;

将对象插入数组时。 $key_here应该是字符串或整数。