Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сортировка в текстовом файле
 
 автор: Konnor   (25.05.2005 в 16:30)   письмо автору
 
 

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

$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><tr><td align=center> <font color=000080> Программа сортировки в текстовом файле</font></td></tr></table><br>";
echo" <table align=center width=400>
<tr>
<td align=center> <font color=ff0000> Имя</font></td>
<td align=center> <font color=ff0000> Описание</font></td>
<td align=center> <font color=ff0000> Цена</font></td>
</tr>";
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.

То есть по первым 2 символам!

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

   
 
 автор: cheops   (25.05.2005 в 20:41)   письмо автору
 
   для: Konnor   (25.05.2005 в 16:30)
 

Хм... не очень понятно что нужно решить-то? Чем не устраивает текущая соритровка и что требуется сделать?

   
 
 автор: Konnor   (26.05.2005 в 14:15)   письмо автору
 
   для: cheops   (25.05.2005 в 20:41)
 

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

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

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

   
 
 автор: Konnor   (26.05.2005 в 15:56)   письмо автору
 
   для: Konnor   (26.05.2005 в 14:15)
 

Помогите!

   
 
 автор: DJ Paltus   (26.05.2005 в 16:28)   письмо автору
 
   для: cheops   (25.05.2005 в 20:41)
 

Проблема в том, кажись, что подлые цифры представляются в виде текста и соответственно сортируются алфавитно, а не арифметически.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования