Ramita para bucle para matrices con claves


152

Uso Twig y tengo una matriz con teclas como esta:

array[1] = "alpha"
array[2] = "bravo"
array[3] = "charlie"
array[8] = "delta"
array[9] = "echo"

Y me gustaría obtener la clave (1,2,3,8,9)y el contenido (alpha, bravo, charlie, delta, echo)en un bucle para obtener todo el valor de esta matriz.

¿Cómo resuelvo este problema?


1
¿Intentaste buscar bucles PHP? Use el foreachbucle.
Josh

3
¡No está en PHP, está en Twig en el archivo de plantilla!
Guillaume

3
Lo suficientemente justo. ¿Intentaste buscar bucles TWIG? twig.sensiolabs.org/doc/tags/for.html
Josh

Respuestas:




15

Estas son operaciones extendidas (por ejemplo, ordenar, invertir) para matrices unidimensionales y bidimensionales en Twig Framework:

Matriz 1D

Sin clasificación de teclas y reversa

{% for key, value in array_one_dimension %}
    <div>{{ key }}</div>
    <div>{{ value }}</div>
{% endfor %}

Clasificación de clave

{% for key, value in array_one_dimension|keys|sort %}
    <div>{{ key }}</div>
    <div>{{ value }}</div>
{% endfor %}

Clasificación de teclas y reversa

{% for key, value in array_one_dimension|keys|sort|reverse %}
    <div>{{ key }}</div>
    <div>{{ value }}</div>
{% endfor %}

Matrices 2D

Sin clasificación de teclas y reversa

{% for key_a, value_a in array_two_dimension %}
    {% for key_b, value_b in array_two_dimension[key_a] %}
        <div>{{ key_b }}</div>
        <div>{{ value_b }}</div>
    {% endfor %}
{% endfor %}

Clasificación de clave en matriz externa

{% for key_a, value_a in array_two_dimension|keys|sort %}
    {% for key_b, value_b in array_two_dimension[key_a] %}
        <div>{{ key_b }}</div>
        <div>{{ value_b }}</div>
    {% endfor %}
{% endfor %}

Clasificación de claves en matrices externas e internas

{% for key_a, value_a in array_two_dimension|keys|sort %}
    {% for key_b, value_b in array_two_dimension[key_a]|keys|sort %}
        <div>{{ key_b }}</div>
        <div>{{ value_b }}</div>
    {% endfor %}
{% endfor %}

Clasificación de clave en matriz externa y clasificación de clave e inversión en matriz interna

{% for key_a, value_a in array_two_dimension|keys|sort %}
    {% for key_b, value_b in array_two_dimension[key_a]|keys|sort|reverse %}
        <div>{{ key_b }}</div>
        <div>{{ value_b }}</div>
    {% endfor %}
{% endfor %}

Clasificación de claves y reversa en matriz externa y clasificación de claves en matriz interna

{% for key_a, value_a in array_two_dimension|keys|sort|reverse %}
    {% for key_b, value_b in array_two_dimension[key_a]|keys|sort %}
        <div>{{ key_b }}</div>
        <div>{{ value_b }}</div>
    {% endfor %}
{% endfor %}

Clasificación de teclas y reversa en matriz externa e interna

{% for key_a, value_a in array_two_dimension|keys|sort|reverse %}
    {% for key_b, value_b in array_two_dimension[key_a]|keys|sort|reverse %}
        <div>{{ key_b }}</div>
        <div>{{ value_b }}</div>
    {% endfor %}
{% endfor %}

2

Supongo que quieres hacer el "Iterating over Keys and Values"

Como dice el documento aquí , simplemente agregue "| keys" en la variable que desee y mágicamente sucederá.

{% for key, user in users %}
    <li>{{ key }}: {{ user.username|e }}</li>
{% endfor %}

Nunca está de más buscar antes de preguntar :)


44
No ha mostrado un ejemplo de uso de "teclas" en su respuesta.
Adambean

66
Te doy 10 porque tienes 308 puntos, pero respondes "Nunca está de más buscar antes de preguntar" es una mierda, así que lo saco
Braian Mellor
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.