问题描述
我想从 Laravel 中的数组中获取带有 id 的唯一名称。我怎么能得到那个?我已经尝试过如下所示的 foreach 循环,但没有成功。
$features=[];
foreach ($vehicles as $key => $vehicle) {
# code...
$features[$key] = $vehicle->features;
}
$distinct_features = array_unique($features);
我的数组就像:
[[{"id":2,"name":"Airbags","image":"features\\January2021\\P69889cirEy57Asq9rld.png","active":1,"created_at":"2021-01-26T17:35:28.000000Z","updated_at":"2021-01-26T17:35:28.000000Z","pivot":{"vehicle_id":6,"feature_id":2}},{"id":3,"name":"ABS","image":"features\\January2021\\SpZJq3j30oISFqdYwxfU.png","active":0,"created_at":"2021-01-26T17:36:00.000000Z","updated_at":"2021-02-22T10:33:26.000000Z","feature_id":3}}],[{"id":2,"pivot":{"vehicle_id":7,"feature_id":2}}],"pivot":{"vehicle_id":8,"pivot":{"vehicle_id":9,"pivot":{"vehicle_id":10,"feature_id":3}}]]
提前致谢。
解决方法
您可以使用laravel collection的unique()
方法
collect($vehicles)
->flatten(1)
->unique(function ($item) {
return $item['id'] . $item['name'];
});
由于您的数据位于不同的数组中,因此我将其展平到一个级别以将所有数据都放在一个数组中,然后我定义了一个闭包函数来定义您的自定义唯一性逻辑(id 的组合 和 姓名).