РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1001 of 1392 menu

Метод flatten

Метод flatten применяется к коллекции и возвращает новый объект коллекции, содержащий все элементы из вложенных массивов или коллекций, преобразованные в одномерный массив. Первым параметром метод принимает глубину вложения, которую нужно преобразовать. По умолчанию параметр равен null, что означает преобразование всех вложенных уровней. Если передать 1, то будет преобразован только первый уровень вложения.

Синтаксис

<?php collect($array)->flatten($depth); ?>

Пример

Давайте преобразуем многомерный массив в плоский:

<?php use Illuminate\Support\Collection; $array = [1, 2, [3, 4, [5, 6]]]; $res = collect($array)->flatten(); echo json_encode($res->all()); ?>

Результат выполнения кода:

[1,2,3,4,5,6]

Пример

Давайте преобразуем массив с различными типами данных:

<?php use Illuminate\Support\Collection; $array = ['a', 'b', ['c', 'd', ['e']], 'f']; $res = collect($array)->flatten(); echo json_encode($res->all()); ?>

Результат выполнения кода:

["a","b","c","d","e","f"]

Пример

Давайте ограничим глубину преобразования только одним уровнем:

<?php use Illuminate\Support\Collection; $array = [1, 2, [3, 4, [5, 6]]]; $res = collect($array)->flatten(1); echo json_encode($res->all()); ?>

Результат выполнения кода:

[1,2,3,4,[5,6]]

Пример

Давайте преобразуем коллекцию объектов в плоский массив:

<?php use Illuminate\Support\Collection; $array = [ ['name' => 'user1', 'age' => 25], ['name' => 'user2', 'age' => 30], ['name' => 'user3', 'age' => 35] ]; $res = collect($array)->flatten(); echo json_encode($res->all()); ?>

Результат выполнения кода:

["user1",25,"user2",30,"user3",35]

Пример

Давайте используем метод flatten в реальном проекте на примере модели Article:

<?php namespace App\Http\Controllers; use App\Models\Article; use Illuminate\Http\Request; class ArticleController extends Controller { public function getTags() { $articles = Article::all(); $tags = $articles->pluck('tags')->flatten()->unique()->values(); return response()->json($tags); } } ?>

Результат выполнения кода:

["laravel","php","vue","react","javascript"]

Смотрите также

  • метод flatMap,
    который применяет функцию к каждому элементу и преобразует результат в плоский массив
  • метод collapse,
    который объединяет массив массивов в один плоский массив
  • метод Arr::flatten,
    который делает то же самое, но для обычных массивов
  • метод collect,
    который создает новый объект коллекции из массива
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить