#ARRAY

La baliza #ARRAY define una matriz en el sentido del lenguaje php como un conjunto de pares clave/valor. Un #ARRAY permite el almacenamiento de valores indexados y puede utilizarse, entre otras cosas, asociado a un operador IN de un bucle.

-  Declarar una matriz :

#SET{mi_matriz, #ARRAY{clave1,valor1,clave2,valor2...}}

-  Recuperar el valor asociado a una clave utilizando el filtro |table_valeur :

[(#GET{mi_matriz}|table_valeur{clave})]

-  Llenar una matriz dinámicamente utilizando el filtro |push :

#SET{palabras_clave_elejidas, #ARRAY{}}
<BOUCLE_themes(MOTS) {id_article}>
 [(#SET{palabras_clave_elejidas, #GET{palabras_clave_elejidas}|push{#ID_MOT}})]
</BOUCLE_themes>

Para forzar los valores de las claves con la función php utilizando como filtro |array_merge:

#SET{palabras_clave_elejidas, #ARRAY{}}
<BOUCLE_themes(MOTS) {id_article}>
 [(#SET{palabras_clave_elejidas,
     #GET{palabras_clave_elejidas}|array_merge{#ARRAY{
         #COMPTEUR_BOUCLE, #ID_MOT
     }}
 })]
</BOUCLE_themes>


Advertencia 1 : el filtro |array_merge no tiene en cuenta la clave a forzar (#COMPTEUR_BOUCLE en el ejemplo anterior) si esa clave es de tipo numérico. Este caso tiene dos soluciones :

  • sea prefijando esta clave con una valor alfabético. :#ARRAY{k#COMPTEUR_BOUCLE, #ID_MOT} ;
  • sea invirtiendo clave y valor (con la condición que valor no sea numérica también) y aplicar la función php como filtro |array_flip a la matriz final: [(#SET{palabras_clave_elejidas, #GET{palabras_clave_elejidas}|array_flip)]

Advertencia 2 : Hay que declarar la matriz antes de llenarla con un bucle.

Nota 1 : El orden de llenado de la matriz se determina por el orden de aparición de datos en el bucle, por lo que depende de otros criterios de clasificación aplicados.
Nota 2 :[(#GET{mi_arreglo}|table_valeur{6})] mostrará el valor asociado a la clave número 6 de la matriz; es decir el 7mo valor: la numeración de las claves (índices) empieza en cero.

-  Utilizar la matriz con un bucle con el operador IN:

<BOUCLE_memes_themes(ARTICLES) {id_mot IN #GET{palabras_clave_elejidas}|sinon{0}}>
...

-  Visualización condicional en función de los valores de una matriz :

[(#ENV{page}|in_array{#ARRAY{0,article,1,rubrique,2,site}}|oui)
Visualización condicional ]

otro ejemplo con una variable ’lolo’pasada por la url:
http://le_site/-ma-rubrique-?lolo=6

[Así se mostrará si el valor de la variable ’lolo’ pasado por la url está presente en la matriz 'les_mots' declarada y llenada anteriormente.
(#ENV{lolo}|in_array{#GET{les_mots}}|oui)
así lo mostrará también]

Para evitar generar un error « Warning : in_array() [function.in-array] : Wrong datatype for second argument. » en el caso que la variable pasada no sea de tipo matriz se puede utilizar el filtro |in_any que captura el error sin mostrar la alerta, y poder obtener un valor aleternativo.

[(#VAL{abc}|in_any{#GET{tablo}, truco a realizar si GET_tablo no es una matriz}|oui|?{truco a realizar si abc es un valor de GET_tablo, truco a realizar si abc no es un valor de GET_tablo})]

Autor o autora marina Publicado el: Actualizado: 26/10/12

Traducciones: عربي, català, English, Español, français, Nederlands