2012-05-23 19 views
9

Un var_dump para mis array $ ROS [$ key] [$ id] da el siguiente resultado:¿Cómo obtener valores de una matriz multidimensional en Twig?

array(2) { 
    [0]=> array(4) { 
     [8259]=> string(8260) "ouvrir 1" 
     [8260]=> string(8261) "fichier 2" 
     [8261]=> string(8262) "quitter 1" 
     [8262]=> string(8263) "lire 2" 
    } 
    [1]=> array(4) { 
     [8259]=> string(8260) "lancer 2" 
     [8260]=> string(8261) "dossier 1" 
     [8261]=> string(8262) "exit 1" 
     [8262]=> string(8263) "lire 2" 
    } 
} 

En mi opinión, estoy atando para obtener todas las cuerdas con los mismos $ Identificación de todas las $ clave. Algo como esto:
1-
ouvrir 1
Lancer 2
2-
fichier 2
Lancer 2

etc

He intentado esto en mi opinión ramita:

{% for key,val in strs['key']['id'] %} 
    {% if strs['key']['id'] is defined %} 
    {{ key }} - <br/>  
    {{ val }}  
    {% endif %} 
{% endfor %} 

Recibí este error:
Tecla clave "f" o matriz con las claves "0, 1" no existe en ...
¿Qué estoy haciendo mal aquí? ¿Y cómo puedo obtener el resultado que estoy buscando?

Respuesta

10

No ponga esta lógica en sus puntos de vista. Use sus vistas solo para mostrar cosas.
hacerlo en su lugar el controlador y pasar el resultado a la vista:

$result = array(); 
foreach ($arrays as $array) { 
    foreach ($array as $key => $value) { 
    $result[$key][] = $value; 
    } 
} 

El resultado será una matriz cuyas claves serán las identificaciones, los valores matrices de cadenas que pertenecen a la misma ID.

Para visualizarlo:

{% for id, stringsById in results %} 
    {{ id }}- <br /> 
    {% for string in stringsById %} 
    {{ string }} <br /> 
    {% endfor %} 
{% endfor %} 
+0

eso es exactamente lo que tengo en mi regulador para obtener la matriz $ resultado en el primer lugar. Estoy tratando de mostrar el contenido de la matriz en mi opinión. – Wissem

+2

Actualicé mi respuesta con el código para mostrar el contenido de la matriz. –

+0

Sí, ese es todo el contenido de la matriz. Pero, estoy tratando de obtener por cada $ key sus correspondientes strs [id]. Como en el ejemplo en mi pregunta: [8259] => cadena (8260) "ouvrir 1" y [8259] => cadena (8260) "lancer 2" comparten la misma identificación (8259) pero para una clave diferente (0 y 1). Ahora lo que quiero es agrupar y mostrar estos dos en cada ciclo. – Wissem

Cuestiones relacionadas