关于在laravel时里面二维数组根据条件合并

<?php

$data1 = [
    ['name' => 'a'],
    ['name' => 'b'],
    ['name' => 'c'],
    ['name' => 'd'],
    ['name' => 'e'],
    ['name' => 'f'],
    ['name' => 'g'],
];

$data2 = [
    ['name' => 'a'],
    ['name' => 'd'],
    ['name' => 'f'],
];

//想要的结果
$result = [
    ['name' => 'a', 'checked' => true],
    ['name' => 'b'],
    ['name' => 'c'],
    ['name' => 'd', 'checked' => true],
    ['name' => 'e'],
    ['name' => 'f', 'checked' => true],
    ['name' => 'g'],
];

//请教 以上问题 在 laravel 怎么实现
假如_丶

flatten方法将多维度的集合变成一维的:

$collection = collect(['name' => 'taylor', 'languages' => ['php', 'javascript']]);
$flattened = $collection->flatten();
$flattened->all();
// ['taylor', 'php', 'javascript'];
746019546 回复 假如_丶

这个达不到我想要的效果,并且这个keys也没有了,只有values,
目前我是通过两个foreach循环来实现的,我想laravel有没有优雅的实现方式.

yin

diff()#

将集合与其它集合或纯 PHP 数组 进行值的比较,返回第一个集合中存在而第二个集合中不存在的值:

$collection = collect([1, 2, 3, 4, 5]);

$diff = $collection->diff([2, 4, 6, 8]);

$diff->all();

// [1, 3, 5]
746019546 回复 yin

还是没有看清楚我想要的结果呢.我要的结果不是差异化.
我想要的结果是对二维数组根据值的比对而对数组进行增删改

JellyBool

我觉得你还是可以认真看看 Collection 的系列:https://www.laravist.com/series/refactoring-loops-with-collection

collect($data1)->map(function($item) use ($data2) {
    if (collect($data2)->contains($item)) {
        $item['check'] = true;
    }
    return $item;
})

一个最快想到的方法