SPIP

[ar] [ast] [bg] [br] [ca] [co] [cpf] [cs] [da] [de] [en] [eo] [es] [eu] [fa] [fon] [fr] [gl] [id] [it] [ja] [lb] [nl] [oc] [pl] [pt] [ro] [sv] [tr] [vi] [zh] Espace de traduction

Baixar

#ARRAY

Agost de 2009 — actualitzat : Novembre de 2009

Totes les versions d'aquest article:

L’etiqueta #ARRAY defineix una taula en el sentit php és a dir un conjunt de parells clau/valor. Un #ARRAY permet així l’emmagatzemament de valors indexats i pot ser utilitzat, entre altres coses, associat a l’operador IN d’un bucle.


-  Declarar una taula :

#SET{la_meva_taula, #ARRAY{clau1,valor1,clau2,valor2...}}

-  Recuperar el valor associat a una clau utilitzant el filtre |table_valeur :

[(#GET{la_meva_taule}|table_valeur{clau})]

-  Omplir una taula dinàmicament utilitzant el filtre |push :

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

o fins i tot forçant el valor de les claus amb la funció php utilitzada com a filtre |array_merge :

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

Atenció 1 : el filtre |array_merge ne té en compte la clau a forçar (#COMPTEUR_BOUCLE a l’exemple que hi ha més avall) si aquesta clau és de tipus numèric. En aquest cas tenim dues solucions:

  • o bé fixar prèviament aquesta clau amb un valor alfabètic :#ARRAY{k#COMPTEUR_BOUCLE, #ID_MOT} ;
  • o bé invertir clau i valor (amb la condició que el valor tampoc sigui numèric) i després aplicar la funció php com a filtre |array_flip a la taula final :[(#SET{paraules_escollides, #GET{mots_choisis}|array_flip)]

Atenció 2 : és necessari declarar la taula abans d’omplir-la en el bucle.

Nota 1 : l’ordre d’emplenar una taula ve determinat per l’ordre d’aparició de les dades a dins del bucle; per tant, depèn del o dels criteris de classificació que són aplicats a aquests.
Nota 2 :[(#GET{la_meva_taula}|table_valeur{6})] mostrarà el valor associat a la clau número 6 de la taula; és a dir el 7è. valor: la numeració de les claus comença amb el zero.

-  Utilitzar la taula a dins d’un bucle amb l’operador IN :

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

-  Visualització condicional en funció dels valors d’una taula :

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

Un altre exemple amb una variable ’lolo’ passada a dins del Url :
http://le_site/-ma-rubrique-?lolo=6

[ Això es mostrarà si el valor de la variable 'lolo' passada a dins del Url es troba present a dins d'una taula 'les_mots' declarada i omplerta anteriorment
(#ENV{lolo}|in_array{#GET{les_mots}}|oui)
això es mostrarà també ]

Per tal de no córrer el risc de generar un error « Warning : in_array() [function.in-array] : Wrong datatype for second argument. » en el cas que la variable passada no sigui del tipus array podrem utilitzar el filtre |in_any que repara l’error sense mostrar l’alerta, i permet visualitzar un valor alternatiu.

[(#VAL{abc}|in_any{#GET{tablo}, truc a fer si GET_tablo no és un array}|oui|?{truc a fer si abc és un valor de GET_tablo, truc a fer si abc no és un valor de GET_tablo})]