| |
|
|
| | Короче, есть файл 1.txt:
1;Груша;Банан
2;Дыня;Яблоко
3;Клубника;Арбуз
Я сортирую его по 3 значению т.е. в итоге получается:
3;Клубника;Арбуз.
1;Груша;Банан
2;Дыня;Яблоко
Но сам файл после сортировки, меняется. Как сделать так чтобы данные можно было сортировать, но файл оставался в оригинале?
Скрипт:
<?php
define("FILE_NAME",'test.txt');
$arr = file(FILE_NAME);
foreach($arr as $item){
list($key,$value,$metr) = explode(";",$item);
$metr = rtrim($metr);
$index = $value;
$index = strtolower($metr);
$ret[$index] = $key.";".$value.";".$metr;
}
ksort($ret);
$handler = fopen(FILE_NAME,'w+');
fwrite($handler,implode("\n",$ret)."\n");
fclose($handler);
?> | |
| |
|
|
| |
|
|
| |
для: Front
(27.09.2006 в 17:24)
| | | Вот этот кусок записывает в файл обновленный массив:
* * *
$handler = fopen(FILE_NAME,'w+');
fwrite($handler,implode("\n",$ret)."\n");
fclose($handler);
?>
|
Его можно убрать? | |
| |
|
|
| |
|
|
| |
для: kasmanaft
(27.09.2006 в 19:06)
| | | Да этот кусок впринципе не нужен, вообще содержимое файла не должно меняться. Нужна только сортировка файла, которая будет отображаться в браузере...
Скрипт которым вывожу содержимое файла в окно браузера после сортировки:
<?php
$filename = "test.txt";
if (file_exists($filename)) {
$file = file($filename);
if (count($file) !== 0) {
echo("<table class=1 cellpadding=3 cellspacing=2 border=\"0\">");
foreach ($file as $line) {
$line = explode(";", $line);
echo("<tr><td>".$line[0]."</td>");
echo("<td>".$line[1]."</td>");
echo("<td>".$line[2]."</td></tr>");
}
echo("</table>");
}}
?> | |
| |
|
|
| |
|
|
| |
для: Front
(27.09.2006 в 21:00)
| | | В итоге у вас должно получиться что-то типа:
<?php
define("FILE_NAME",'test.txt');
$arr = file(FILE_NAME);
foreach($arr as $item){
list($key,$value,$metr) = explode(";",$item);
$metr = rtrim($metr);
$index = $value;
$index = strtolower($metr);
$ret[$index] = $key.";".$value.";".$metr;
}
$file = ksort($ret);
if (count($file) !== 0) {
echo("<table class=1 cellpadding=3 cellspacing=2 border=\"0\">");
foreach ($file as $line) {
$line = explode(";", $line);
echo("<tr><td>".$line[0]."</td>");
echo("<td>".$line[1]."</td>");
echo("<td>".$line[2]."</td></tr>");
}
echo("</table>");
}}
?>
|
| |
| |
|
|
| |
|
|
| |
для: kasmanaft
(27.09.2006 в 23:04)
| | | Непонятно с чем это связано, но выдает ошибку типа: Invalid argument supplied for foreach() во втором цилке. Но это при условии, что я убираю 1 скобку после echo("</table>");. Если не убираю ее, то он ругается: parse error. | |
| |
|
|
| |
|
|
| |
для: Front
(28.09.2006 в 10:40)
| | | Да это я глупость написал :)
Нужно заменить на что-то типа:
$file = $ret;
ksort($file);
|
Или ... лучше даже так:
ksort($ret);
if (count($ret) !== 0) {
echo("<table class=1 cellpadding=3 cellspacing=2 border=\"0\">");
foreach ($ret as $line) {
$line = explode(";", $line);
echo("<tr><td>".$line[0]."</td>");
echo("<td>".$line[1]."</td>");
echo("<td>".$line[2]."</td></tr>");
|
| |
| |
|
|
| |
|
|
| |
для: kasmanaft
(28.09.2006 в 13:47)
| | | Все заработало, огромное спасибо за помощь!!!!
А возможно к этой сортировке прибавить выборку, ну допустим по названию фрукта, чтобы в результатах была только одна строчка таблицы с названием этого фрукта? | |
| |
|
|
| |
|
|
| |
для: Front
(28.09.2006 в 14:27)
| | | Что-то такое?
<?php
define("FILE_NAME",'test.txt');
$arr = file(FILE_NAME);
$frukt = 'Дыня';
foreach($arr as $item){
list($key,$value,$metr) = explode(";",$item);
if ($value == $frukt)
{
$metr = rtrim($metr);
$index = $value;
$index = strtolower($metr);
$ret[$index] = $key.";".$value.";".$metr;
}
}
* * * *
|
| |
| |
|
|
| |
 10.2 Кб |
|
| |
для: kasmanaft
(28.09.2006 в 16:41)
| | | А вообще этот скрипт (сортировки а не выборки) можно применить к более длинной строке, я имею в виду, типа:
1;Груша;Банан;Яблоко;Помидор
2;Арбуз;Дыня;Манго;Огурец
3;Тыква;Свекла;Лук;Чеснок
Только надо увеличить кол-во переменных типа:
list($key,$value,$metr,$fut,$mut) = explode(";",$item);
if ($value == $frukt)
{
$metr = rtrim($metr);
$index = $value;
$index = strtolower($metr);
$ret[$index] = $key.";".$value.";".$metr.";".$fut.";".$mut;
Правильно?
И вообще дам весь расклад:
На самом деле есть файл stroy.txt (вложенный):
Я хочу сортировать его по разным полям (в зависимости от прописанных в скрипте):
Вот сам скрипт:
<?php
define("FILE_NAME",'stroy.txt');
$arr = file(FILE_NAME);
foreach($arr as $item){
list($key,$value,$metr,$dik,$dim,$sik,$sim,$mir,$mik,$vik,$vir,$vis,$vin,$vil,$vim) = explode(";",$item);
$metr = rtrim($metr);
$index = $metr;
$index = strtolower($metr);
$ret[$index] = $key.";".$value.";".$metr.";".$dik.";".$dim.";".$sik.";".$sim.";".$mir.";".$mik.";".$vik.";".$vir.";".$vis.";".$vin.";".$vil.";".$vim;
}
ksort($ret);
if (count($ret) !== 0) {
# выведем таблицу в цикле
echo("<table class=1 cellpadding=3 cellspacing=2 border=\"0\">");
echo("<tr><td class=1>".Район."</td>");
echo("<td class=1>".Комнат."</td>");
echo("<td class=1>".Адрес."</td>");
echo("<td class=1>".Этаж."</td>");
echo("<td class=1>".Общая."<br>".площадь."</td>");
echo("<td class=1>".Жилая."<br>".площадь."</td>");
echo("<td class=1>".Кухня."</td>");
echo("<td class=1>".Метро."</td>");
echo("<td class=1>".Тип."<br>".дома."</td>");
echo("<td class=1>".Санузел."</td>");
echo("<td class=1>".Контакты."</td>");
echo("<td class=1>".Цена."</td>");
echo("<td class=1>".Срок."<br>".сдачи."</td>");
echo("<td class=1>".Дополнительно."</td></tr>");
// пишем в файл
foreach ($ret as $line) {
$line = explode(";", $line);
echo("<tr><td>".$line[0]."</td>");
echo("<td>".$line[1]."</td>");
echo("<td>".$line[2]."</td>");
echo("<td>".$line[3]."</td>");
echo("<td>".$line[4]."</td>");
echo("<td>".$line[5]."</td>");
echo("<td>".$line[6]."</td>");
echo("<td>".$line[7]."</td>");
echo("<td>".$line[8]."</td>");
echo("<td>".$line[9]."</td>");
echo("<td>".$line[11]."</td>");
echo("<td>".$line[12].+.0.+.0."</td>");
echo("<td>".$line[13]."</td>");
echo("<td>".$line[14]."</td></tr>");
}
echo("</table>");
?>
Почему то когда меняю переменную он всегда разные результаты выдает... | |
| |
|
|
| |
|
|
| |
для: Front
(28.09.2006 в 17:33)
| | | >>И вообще дам весь расклад:
>>На самом деле есть файл stroy.txt (вложенный):
А я всё понять не могу, что за бананы ... сортировка какая-то непонятная .. =))
>>Почему то когда меняю переменную он всегда разные результаты выдает...
Передавая переменную для сортировки, вы передаете ключ массива ... если такой ключ в массиве уже есть, все что за ним было записано, заменится ...
можно сделать что-нить такое:
<?
* * * * * * *
$index = strtolower($key);
if (isset($ret[$index]))
while(isset($ret[$index]))
$index .= '.';
$ret[$index] = $key.";".$value.";".$m * * * * * * *
* * * * * * *
|
| |
| |
|
|
| |
|
|
| |
для: kasmanaft
(28.09.2006 в 19:05)
| | | Благодярю за помощь, очень помогли, просто супер... :-))))
Но возник еще вопрос, понимаю что надоел, но пробовал разными методами и GET И POST но сортировка, при нажатии на название столбца не получается... Может подскажите чего-нибудь | |
| |
|
|