Cómo agregar un elemento a una matriz en Twig fácilmente

Para un desarrollador de PHP, agregar elementos a una matriz existente es bastante fácil como usar array_push. Lamentablemente, un método o filtro con el mismo nombre en Twig no está disponible sin crear una extensión personalizada, sin embargo, puede lograr un buen resultado utilizando el filtro de combinación.

Matrices no asociativas

Si su matriz original no es asociativa y desea agregar un elemento, ignorando el tipo de valor, el filtro de fusión espera como primer argumento una matriz cuyo contenido se fusionará con la variable asignada:

{% set myArray = [] %}


{% set myArray = myArray|merge([1]) %}
{% set myArray = myArray|merge([2,3]) %}
{% set myArray = myArray|merge([4]) %}

{# 
    El contenido de myArray es
    myArray = [1,2,3,4] 
#}

Tenga en cuenta que puede crear cualquier contenido complejo utilizando la misma sintaxis:

{% set myArray = [] %}

{% set myArray = myArray|merge([
    [1,2],
    [3,4],
    [5,6]
]) %}

{% set myArray = myArray|merge([
    [
        [1,2]
    ],
    [
        [3,4]
    ],
]) %}
 
{# 
    The content of myArray is
    myArray = [
        [
            1,2
        ],
        [
            3,4
        ],
        [
            5,6
        ],
        [
            [1,2]
        ],
        [
            [3,4]
        ]
    ]
#}

Matrices asociativas

Para agregar elementos a una matriz asociativa, solo pasaría como primer argumento una matriz con corchetes con los nuevos valores:

{# Tenga en cuenta que la matriz original en este caso tiene un elemento #}
{% set myArray = {
    "first": 1
} %}

{% set myArray = myArray|merge({
    "second": 2
}) %}

{% set myArray = myArray|merge({
    "third": 3
}) %}
 
{# 
    El contenido de myArray es
    myArray = {
        "first":1,
        "second":2,
        "third":3
    }
#}

Tenga en cuenta que el filtro de combinación usa array_merge en segundo plano, lo que significa que si está trabajando con una matriz asociada, si la clave ya existe en el elemento, se sobrescribirá:

{# Tenga en cuenta que la matriz original en este caso tiene un elemento #}
{% set myArray = {
    "first": 1
} %}

{# Agrega la "segunda" clave con valor 2 #}
{% set myArray = myArray|merge({
    "second": 2
}) %}

{# Cambiar el valor de la "segunda" clave #}
{% set myArray = myArray|merge({
    "second": "Modified 2"
}) %}
 
{# 
    El contenido de myArray es
    myArray = {
        "first":1,
        "second":"Modified 2"
    }
#}

Que te diviertas ❤️!

Esto podria interesarte

Conviertete en un programador más sociable