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.