Я хочу получить уникальное имя с идентификатором из массива в laravel. Как я могу это получить? Я пробовал цикл 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","pivot":{"vehicle_id":6,"feature_id":3}}],[{"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":7,"feature_id":2}}],[{"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":8,"feature_id":2}}],[{"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":9,"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","pivot":{"vehicle_id":9,"feature_id":3}}],[{"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":10,"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","pivot":{"vehicle_id":10,"feature_id":3}}]]

Заранее спасибо.

1
Manish 2 Мар 2021 в 08:38

1 ответ

Лучший ответ

Вы можете использовать метод unique() из коллекции laravel

collect($vehicles)
    ->flatten(1)
    ->unique(function ($item) {
        return $item['id'] . $item['name'];
    });

Поскольку у вас есть данные в разных массивах, я сгладил их до одного уровня, чтобы все они были в одном массиве, затем я определил функцию закрытия для определения вашей пользовательской логики уникальности (комбинация id и имя ).

1
BABAK ASHRAFI 2 Мар 2021 в 05:56