vendor/twig/twig/src/Node/Expression/ArrayExpression.php line 58
<?php/** This file is part of Twig.** (c) Fabien Potencier** For the full copyright and license information, please view the LICENSE* file that was distributed with this source code.*/namespace Twig\Node\Expression;use Twig\Compiler;class ArrayExpression extends AbstractExpression{private $index;public function __construct(array $elements, int $lineno){parent::__construct($elements, [], $lineno);$this->index = -1;foreach ($this->getKeyValuePairs() as $pair) {if ($pair['key'] instanceof ConstantExpression && ctype_digit((string) $pair['key']->getAttribute('value')) && $pair['key']->getAttribute('value') > $this->index) {$this->index = $pair['key']->getAttribute('value');}}}public function getKeyValuePairs(): array{$pairs = [];foreach (array_chunk($this->nodes, 2) as $pair) {$pairs[] = ['key' => $pair[0],'value' => $pair[1],];}return $pairs;}public function hasElement(AbstractExpression $key): bool{foreach ($this->getKeyValuePairs() as $pair) {// we compare the string representation of the keys// to avoid comparing the line numbers which are not relevant here.if ((string) $key === (string) $pair['key']) {return true;}}return false;}public function addElement(AbstractExpression $value, AbstractExpression $key = null): void{if (null === $key) {$key = new ConstantExpression(++$this->index, $value->getTemplateLine());}array_push($this->nodes, $key, $value);}public function compile(Compiler $compiler): void{$compiler->raw('[');$first = true;foreach ($this->getKeyValuePairs() as $pair) {if (!$first) {$compiler->raw(', ');}$first = false;$compiler->subcompile($pair['key'])->raw(' => ')->subcompile($pair['value']);}$compiler->raw(']');}}