Метод toArray класса ArrayCollection
Метод toArray класса ArrayCollection возвращает обычный PHP-массив,
содержащий все элементы коллекции с сохранением их ключей.
Метод не принимает параметров и всегда возвращает значение типа array.
После вызова коллекция остаётся неизменной, а массив является её независимой копией.
Синтаксис
$res = $collection->toArray();
Пример
Давайте создадим коллекцию из нескольких строк и преобразуем её в массив:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Doctrine\Common\Collections\ArrayCollection;
class ArticleController extends AbstractController
{
public function index(): Response
{
$collection = new ArrayCollection(['abcde', 'article', 'user']);
$res = $collection->toArray();
return new Response(json_encode($res));
}
}
?>
Результат выполнения кода:
["abcde", "article", "user"]
Пример
Давайте создадим коллекцию с числовыми ключами и преобразуем её в массив:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Doctrine\Common\Collections\ArrayCollection;
class ArticleController extends AbstractController
{
public function index(): Response
{
$collection = new ArrayCollection([1, 2, 3, 4, 5]);
$res = $collection->toArray();
return new Response(json_encode($res));
}
}
?>
Результат выполнения кода:
[1, 2, 3, 4, 5]
Пример
Давайте создадим коллекцию со строковыми ключами и преобразуем её в массив:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Doctrine\Common\Collections\ArrayCollection;
class ArticleController extends AbstractController
{
public function index(): Response
{
$collection = new ArrayCollection([
'first' => 'abcde',
'second' => 'article',
'third' => 'user'
]);
$res = $collection->toArray();
return new Response(json_encode($res));
}
}
?>
Результат выполнения кода:
{"first": "abcde", "second": "article", "third": "user"}
Пример
Давайте создадим пустую коллекцию и преобразуем её в массив:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Doctrine\Common\Collections\ArrayCollection;
class ArticleController extends AbstractController
{
public function index(): Response
{
$collection = new ArrayCollection();
$res = $collection->toArray();
return new Response(json_encode($res));
}
}
?>
Результат выполнения кода:
[]
Пример
Давайте добавим элементы в коллекцию, а затем преобразуем её в массив:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Doctrine\Common\Collections\ArrayCollection;
class ArticleController extends AbstractController
{
public function index(): Response
{
$collection = new ArrayCollection();
$collection->add('abcde');
$collection->add('article');
$collection->add('user');
$res = $collection->toArray();
return new Response(json_encode($res));
}
}
?>
Результат выполнения кода:
["abcde", "article", "user"]
Пример
Давайте убедимся, что метод возвращает копию, а не саму коллекцию:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Doctrine\Common\Collections\ArrayCollection;
class ArticleController extends AbstractController
{
public function index(): Response
{
$collection = new ArrayCollection(['abcde', 'article']);
$res = $collection->toArray();
$res[] = 'user';
return new Response(json_encode([
'array' => $res,
'collection' => $collection->toArray()
]));
}
}
?>
Результат выполнения кода:
{"array": ["abcde", "article", "user"], "collection": ["abcde", "article"]}
Смотрите также
-
класс
ArrayCollection,
который представляет собой коллекцию элементов -
метод
add,
который добавляет элемент в коллекцию -
метод
getValues,
который возвращает значения элементов коллекции -
метод
getKeys,
который возвращает ключи элементов коллекции