Сортировка в текстовом файле

konnor

Guest
Сортировка в текстовом файле

Нашел такой скрипт
Он работает только есть проблема!
Сортировка идет по цене

PHP:
<?     $base_sort = "base_sort.dat"; 
function priceCmp ( $a, $b ){  
if ( $a[price] == $b[price] ) return 0; 
if ( $a[price] > $b[price] ) return -1; return 1;}  
 echo" <table align=center width=400>";  
if ($sort == price) {  
$general = file($base_sort);  
for ( $i = 0; $i < count ($general); $i++) {   
list ($name,$a,$price) = explode("<>", $general[$i]); 
 $products[$i] = array( price => $price, name => "$name<>$a");
 }   
$fp = fopen ($base_sort, "w");  
usort( $products, priceCmp );  
foreach ( $products as $val ) fputs ($fp, "$val[name]<>$val[price]");   
fclose ($fp);   
}   
$general = file ($base_sort);  
for ( $i = 0; $i < count ($general); $i++) {   
list ($name,$a,$price) = explode("<>", $general[$i]);  
echo"<tr>  
 <td align=center> $name</td>   
<td align=center> $a</td> 
<td align=center> $price</td>   </tr>";  
 }   
echo"</table><br>   
<table align=center width=400>   
<tr>   <td align=center>&nbsp;</td>   
<td align=center><a href=$PHP_SELF?act=sort&sort=price>сортировать по полю: Цена</a></td>   
</tr>   </table>";   ?>

Файл base_sort.dat
Арбуз<>круглый<>260 y.e.
Финик<>мягкий<>95 y.e.
Груша<>сладкая<>355 y.e.
Яблоко<>зеленое<>20 y.e.

Сортирует так
Финик<>мягкий<>95 y.e.
Груша<>сладкая<>355 y.e.
Арбуз<>круглый<>260 y.e.
Яблоко<>зеленое<>20 y.e.

Мне нужно что бы сортировало по цене в сторону возрастания!
то есть
на выходе было

Груша<>сладкая<>355 y.e.
Арбуз<>круглый<>260 y.e.
Финик<>мягкий<>95 y.e.
Яблоко<>зеленое<>20 y.e.

Так что бы цены сортировались по возрастанию!

Как это решить подскажите!
 

konnor

Guest
Re: Re: Сортировка в текстовом файле

Автор оригинала: dorfey
Если я тя правельно понял, то тебе сюда
http://ru3.php.net/usort
Я там был!
Я понимаю !
Но какая?
И вообще нужно сортировать по функции natsort() она бы правильно отсортировала!
Но она не подходит!
 

dorfey

Guest
Пардон обшибся.
вот те сортировка массива:
PHP:
$temp=array(1, 334, 2, 75, 6, 9, 4, 5534, 23);
sort($temp);
for($i=0; $i<count($temp); $i++)
{
echo $temp[$i]."<br>";
}
Что тут еще не понятно?
 

konnor

Guest
Я все понял!
Это есть в любом учебнике.
Но мне не это надо.
Но это не то что я спрашивал.
Все равно спасибо.
 

dorfey

Guest
Вот когда задашь четкий вопрос, тогда тебе на него и ответят. Твой кусок скрипта который ты привел, читать никто не собирается!
 

konnor

Guest
Автор оригинала: dorfey
Вот когда задашь четкий вопрос, тогда тебе на него и ответят. Твой кусок скрипта который ты привел, читать никто не собирается!
Извини что отнял у тебя время!
 

dorfey

Guest
konnor
Нафик мне твои извинения.
Я думаю теперь ты понял свою ошибку.
Если тебе нуна помощь, задавай четкий вопрос!
Советую заглянуть сюда
 

konnor

Guest
Я прочитал.
Еще раз прошу извинения!
Я хотел что бы мне помогли.
Вопрос простой
В этой программе все работает правильно и ошибок нет.
Просто на выходе не то что мне надо.

При сортировке по цене нужгно что бы сравнивало как числа а не как строки.

Вот вобщемто и все.
 

StUV

Rotaredom
konnor
если хочешь чтобы тебе помогли - разберись сначала что и _как_ делает твой код
для этого достаточно прочитать ман по указанным функциям

как прочитаешь - если еще что-то будет непонятно - спрашивай ...
 

Taymik

Guest
я не рабирал че там сверху написано, но сортировати масив
по числам можно так:
$array - евой масив
sort($array, SORT_NUMERIC) - (сортировка по возрастанию)
rsort($array, SORT_NUMERIC) - (сортировка по убыванию)
 

konnor

Guest
Я уже разобрался!
Всем спасибо!
Особенно sakon!
Коменты всегда рулят!
 
Сверху