2010-08-01 8 views
5

Sto usando {foreach} all'interno di Smarty come questoDisporre lista in reverse_array entro {foreach}

{foreach key=num item=reply from=$replies} 
//something goes here. 
{/foreach} 

Attualmente sto ottenendo risposte disposti come ...

più vecchio -> Vecchio -> Nuovo -> più recente

voglio disporli in questo ordine

recente -> Nuovo -> Vecchio -> più vecchio

Come raggiungere questo?

Grazie

risolto

Grazie a ts per questo

from=$replies|@array_reverse 

& obbligatori seguenti plugin di Smarty

modifier.reverse_array.php

<?php 
/** 
* Smarty plugin 
* @package Smarty 
* @subpackage plugins 
*/ 


/** 
* Smarty reverse_array modifier plugin 
* 
* Type:  modifier<br> 
* Name:  reverse_array<br> 
* Purpose: reverse arrays 
* @author Noel McGran 
* @param array 
* @return array 
*/ 
function smarty_modifier_reverse_array($array) 
{ 
    return array_reverse($array); 
} 

/* vim: set expandtab: */ 

?> 

risposta

26

Questo risolverà il problema:

from=$replies|@array_reverse 
2

Partenza array_reverse();)

in caso contrario, si può semplicemente mettere i dati su un nuovo array (o qualunque sia la struttura che si sta usando) con foreach e array_pop() poi lo avete in altro modo;) pila vs coda

+0

il mio PHP è codificato Quindi non può apportare alcuna modifica che utilizza la matrice inversa .. – MANnDAaR

+0

mia opzione seccond probabilmente il migliore per voi allora;) prima utilizzare uno foreach e mettere gli elementi in una nuova struttura a seguito di un LIFO quindi utilizzare un nuovo foreach e basta stamparlo (o usarlo, o qualsiasi altra cosa: P);) – Saikios

0

Se i dati sono in arrivo da un database è sufficiente utilizzare una clausola ORDER BY invece di qualche trucco in yo ur modello.

SELECT ... FROM ... ORDER BY date DESC