Метод getKeys класса ArrayCollection
Метод getKeys класса ArrayCollection возвращает массив,
содержащий все ключи коллекции. Метод не принимает параметров
и возвращает обычный PHP-массив с ключами в том порядке,
в котором они хранятся в коллекции.
Синтаксис
public function getKeys(): array
Пример
Давайте создадим коллекцию с числовыми ключами и получим все её ключи:
<?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
{
$coll = new ArrayCollection(['a', 'b', 'c', 'd', 'e']);
$res = $coll->getKeys();
return new Response(json_encode($res));
}
}
?>
Результат выполнения кода:
[0, 1, 2, 3, 4]
Пример
Давайте создадим коллекцию со строковыми ключами и получим все её ключи:
<?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
{
$coll = new ArrayCollection([
'user' => 'abcde',
'article' => 'hello',
]);
$res = $coll->getKeys();
return new Response(json_encode($res));
}
}
?>
Результат выполнения кода:
["user", "article"]
Пример
Давайте удалим один элемент из коллекции и посмотрим, как изменятся её ключи:
<?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
{
$coll = new ArrayCollection(['a', 'b', 'c', 'd', 'e']);
$coll->removeElement('b');
$res = $coll->getKeys();
return new Response(json_encode($res));
}
}
?>
Результат выполнения кода:
[0, 2, 3, 4]
Пример
Давайте используем метод getKeys вместе
с методом getValues для обхода коллекции:
<?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
{
$coll = new ArrayCollection([
'user' => 'abcde',
'article' => 'hello',
]);
$keys = $coll->getKeys();
$values = $coll->getValues();
$res = array_combine($keys, $values);
return new Response(json_encode($res));
}
}
?>
Результат выполнения кода:
{"user": "abcde", "article": "hello"}
Смотрите также
-
класс
ArrayCollection,
который представляет собой коллекцию элементов -
метод
getValues,
который возвращает массив значений коллекции -
метод
get,
который возвращает элемент по ключу -
метод
toArray,
который возвращает коллекцию в виде массива