Сортировка в foreach

S@fer

Новичок
Сортировка в foreach

возник такой вопрос.
С помошью цикла foreach выводится на экран дата и новость

PHP:
<?php foreach ($news as $n){ ?>
<p/>
<b><p id="header"><?php echo $n['News']['add_date']?>
</b><?php echo $n['News']['content']?></p>
Как можно сделать сортировку на убывание по дате.
Дата в формате ГГГГ-ММ-ДД
Пробовал функцию sort($n['News']['add_date']). Но, как понял, это не правильно.
Посоветуйте пожалуйста правильное решение.
 

spiverg

Новичок
ты ведь $news берешь из базы? так вот сортируй выборку эту и будет правильное решение, что нибудь вроде:
[sql]
SELECT * FROM news ORDER BY date0 DESC
[/sql]
 

Фанат

oncle terrible
Команда форума
S@fer
Сортировать надо ДО вывода, а не во время.
Почему в жизни у вас такие вопросы не возникают, а в программировании ставят в тупик? Здравый смысл где?
Если тебе надо отсчитать некоторую сумму денег, то ты её СНАЧАЛА разложишь по порядку, а потом начнешь отсчитывать. А не во время.
И тебе, наверное, не приходит в голову сортировать ОДНУ банкноту, которую ты держишь в руках? А что ж ты пытаешься здесь отсортировать ЕДИНСТВЕННЫЙ элемент списка, вместо того, чтобы отсортировать СПИСОК?
 

S@fer

Новичок
Можно отсортировать и после вывода, вот код
<?php $m=0; foreach ($news as $n)
{ ?>
<p/>
<p id="header"><?php $n['News']['add_date']?>
<? $str=$n['News']['add_date']; ?>
<?php $n['News']['content']?></p>
<? $nov=$n['News']['content'];
$array[$m]="$str $nov";
$m=$m+1; ?>
<? } ?>
<?php
rsort($array);
reset($array);
while (list($key, $val) = each($array))
{
echo "$val ";?> <br>
<? }?>
 

tardis

lazy
ишь разбежался, можно поинтересоваться, на каком основании ты это называешь "после вывода"? или echo "$val " для тебя не вывод, а шаманское заклинание.

к тому же ***** не говорил, что это невозможно, JavaScript тебе в руки, новатор :rolleyes:
 

S@fer

Новичок
На таком, что сначала формируются все строки, а только потом происходит сортировка.
 

tardis

lazy
учите матчасть, товарищ, "формирование строк" != "вывод" ни на одной точке евклидова, как врочем и любого другого пространства
 

S@fer

Новичок
Да, ты прав. эта строчка была не нужна, в конечном виде код выглядит таким образом
PHP:
<?php 
$m=0; 
foreach ($news as $n) {
  $str=$n['News']['add_date'];
  $ye=substr($str,0,4);
  $mon=substr($str,5,2);
  $day=substr($str,8,2);
  $nov=$n['News']['content'];
  $array[$m]="<b>$ye-$mon-$day</b>  $nov";
  $m=$m+1;     	
} 
rsort($array);
reset($array);
while (list($key, $val) = each($array)) {    
  echo "$val  <br><br>";
}  	
?>
 

cDLEON

Онанист РНРСlub
конструкциё изыка 3.х там везде этим пользовались. А чё страннава?
 
Сверху