Класс ArrayCollection
Класс ArrayCollection - это мощный инструмент из компонента
Doctrine Collections, который используется в Symfony для работы
с наборами данных. Он инкапсулирует внутри себя обычный массив
и предоставляет множество методов для удобной работы с элементами:
добавления, удаления, фильтрации, поиска и сортировки. Первым
параметром конструктор принимает исходный массив элементов.
Синтаксис
new ArrayCollection(array $elements = [])
Пример
Давайте создадим коллекцию из обычного массива и выведем её содержимое:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use DoctrineCommonCollectionsArrayCollection;
class ArticleController extends AbstractController
{
public function index(): Response
{
$collection = new ArrayCollection(['a', 'b', 'c', 'd', 'e']);
return new Response(implode(', ', $collection->toArray()));
}
}
?>
Результат выполнения кода:
"a, b, c, d, e"
Пример
Давайте добавим новый элемент в коллекцию и проверим его наличие:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use DoctrineCommonCollectionsArrayCollection;
class ArticleController extends AbstractController
{
public function index(): Response
{
$collection = new ArrayCollection(['a', 'b', 'c', 'd', 'e']);
$collection->add('hello');
$res = $collection->contains('hello') ? 'found' : 'not found';
return new Response($res);
}
}
?>
Результат выполнения кода:
"found"
Пример
Давайте отфильтруем коллекцию, оставив только нужные элементы:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use DoctrineCommonCollectionsArrayCollection;
class ArticleController extends AbstractController
{
public function index(): Response
{
$collection = new ArrayCollection([1, 2, 3, 4, 5]);
$filtered = $collection->filter(function ($value) {
return $value > 2;
});
return new Response(implode(', ', $filtered->toArray()));
}
}
?>
Результат выполнения кода:
"3, 4, 5"
Смотрите также
-
метод
add,
который добавляет элемент в коллекцию -
метод
removeElement,
который удаляет элемент из коллекции -
метод
filter,
который фильтрует элементы по callback-функции -
метод
toArray,
который возвращает обычный массив из коллекции