从laravel中的集合创建关联数组以进行检查

时间:2017-03-28 18:06:09

标签: php arrays laravel associative

我很难尝试从Laravel中的集合创建关联数组。然后应该使用该数组进行大小写检查。

我的收藏方式如下:

$collected_items = $user->collected_items()->where('model_id', '=', $model_id)->get();

我只需要提取此集合中的一些相关数据,例如'color_id'

我需要检查color_id,因为如果color_id = 0, 1 or 2

我应该运行不同的代码

由于我不想针对每个案例进行数据库查询,我认为我最好先加载数据,然后将其放入关联数组中;

然而,就我而言,我无法创造这个阵列 我试过了:

$array_of_colors = []

    foreach ($collected_items as $i) {

                    if ($i['color_id'] == 0) {

                        $array_of_colors += ['black' => $i->model_color_id];
                    }
                    if ($i['color_id'] == 1) {

                        $array_of_colors += ['colored' => $i->model_color_id];
                    }
                    if ($i['color_id'] == 2) {

                        $array_of_colors += ['white' => $i->model_color_id];
                    }


                }

然后我会使用$array_of_colors检查我是否有黑色情况然后做某事,是白色其他等等。

2 个答案:

答案 0 :(得分:0)

$array_of_colors = []

foreach ($collected_items as $i) {

                if ($i['color_id'] == 0) {

                    $array_of_colors[] = ['black' => $i->model_color_id];
                }
                if ($i['color_id'] == 1) {

                    $array_of_colors[] = ['colored' => $i->model_color_id];
                }
                if ($i['color_id'] == 2) {

                    $array_of_colors[] = ['white' => $i->model_color_id];
                }


            }

答案 1 :(得分:0)

我强烈推荐使用Laravel中提供的Collection函数,而不是这样做。特别是我认为filter()适合你。

https://laravel.com/docs/5.4/collections#method-filter

这样的事情:

$black_items = $collected_items->filter(function ($value, $key) {
  return $value->model_color_id == 1;
});