El uso de una matriz como la clave para una segunda matriz en Smarty (PHP)

StackOverflow https://stackoverflow.com/questions/952821

  •  11-09-2019
  •  | 
  •  

Pregunta

Tengo dos bucles que se ejecutan en mi código, quiero usar un elemento de una matriz como la clave en una segunda matriz, pero estoy seguro de cómo hacer esto con Smarty.

"$dateAndUserForEdit.$key.edit_id" contiene un entero (sacado de la db)

Quiero utilizar ese valor como la llave en un segundo bucle, que funciona bien si harcode en el número entero:

{foreach from=$historyOfRepair.9 key=key item=i}

Pseudo código para el tipo de cosas que he estado tratando es:

{foreach from=$historyOfRepair.{$dateAndUserForEdit.$key.edit_id} key=key item=i}

Pero, por supuesto, esto no funciona! ¿Alguien puede ayudar?

¿Fue útil?

Solución

Algo así como el próximo puede trabajar (no se puede comprobar en la actualidad):

{assign var=edit_id value=$dateAndUserForEdit.$key.edit_id}
{foreach from=$historyOfRepair.$edit_id key=key item=i}

Otros consejos

No sé si esto es se necesitaba truco para las versiones antiguas, pero se puede (como creo que hace bastante tiempo ahora) hacer esto:

ya que:

{$someArray.someKey=9}
{$otherArray.9=$someValue}

Equivalente:

{$otherArray[$someARray.$someKey]=$someValue}

Sólo estoy comentando aquí porque nadie le ha dado ningún consejo sin embargo ... Nunca he utilizado Smarty como Siempre he hecho mis propios sistemas de plantillas (por lo que podría ser ignorante aquí y mi consejo inútil) ...

Puede usted acaba de construir su matriz sin smarty y luego pasarlo a Smarty para la exhibición? En lo personal, en lugar de meterse con el código del motor nueva plantilla, eso es probablemente lo que haría para algo más que lo básico.

Estoy de acuerdo con Arvo. Usted tendrá que asignar el identificador de una variable temporal para que pueda ser utilizado como un cambio en el bucle foreach. Tenga en cuenta que en su código de ejemplo, el valor de la clave $ será reemplazada con la clave del elemento actual de la matriz $ historyOfRepair. De lo contrario, que funciona (probado también :)).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top