Помогите с сортировкой в php. Please!!!

verhmax
На сайте с 01.12.2005
Offline
191
700

Добрый день. в силу того что знания в php малы, прошу у Вас помощи!!!

есть текстовый файл. в нем инфа записана в виде:

строка1|45|

строка2|12|

строка3|51|

необходимо прочитать файл, извлечить из строки значение во второй колонке, отсортировать эти значения и вывести на экран.

мучаюсь уже долго!

читать файл и вывести на экран неотсортированые числа могу, отсортировать простой массив и вывести на экран тоже получается, а вот чтоб оба сразу совместить ,то никак не могу:confused:

dkameleon
На сайте с 09.12.2005
Offline
386
#1


$text = file_get_contents("file.txt");
$rows = explode("\n", $text);
$nums = array();
foreach($rows as $k => $v) {
$cols = explode("|", $v);
$nums[] = $cols[1];
}
natsort($nums);
print_r($nums);
Дизайн интерьера (http://balabukha.com/)
verhmax
На сайте с 01.12.2005
Offline
191
#2

dkameleon, да, работает, спасибо. тока это код для меня очень сложный:-( вообще немогу разобраться. а как сделать чтоб выводило без Array ( [2] => и т.д. а вместе с текстом который впереди цифр стоит "строка2" и сортировку в обратном порядке. пробовал rsort() вместо natsort() выдает ошибку:-(

dkameleon
На сайте с 09.12.2005
Offline
386
#3

а... так это совсем другая задача :)

можно просто выкрутиться с массивами, если одна из колонок уникальная.

verhmax
На сайте с 01.12.2005
Offline
191
#4

и как мне теперь быть? для меня это сложновато:(

DI
На сайте с 03.01.2007
Offline
123
#5
dkameleon:
можно просто выкрутиться с массивами, если одна из колонок уникальная.

если действительно уникальная, то:

$text = file_get_contents("file.txt");
$rows = explode("\n", $text);
$nums = array();
foreach($rows as $v) {
$cols = explode("|", $v);
$id = $cols[1];
$content = $cols[0];

$nums[$id] = $content;
}
krsort($nums);
foreach ($nums as $key => $cur) echo $key.":".$cur."<br>";
Высказывание идиотского утверждения требует на порядок меньше усилий, чем его последовательное и обоснованное опровержение и более того, иногда это опровержение вообще невозможно. © (http://zhurnal.lib.ru/s/shapiro_m_a/raspidiota.shtml)
dkameleon
На сайте с 09.12.2005
Offline
386
#6
verhmax:
и как мне теперь быть?

ну для начала ответить на вопрос: какое из полей уникальное?

Вариант для уникальных чисел написал DenIT.

verhmax
На сайте с 01.12.2005
Offline
191
#7
DenIT:
если действительно уникальная

у меня первая часть строки уникальная, текст типа "строка2" везде разный, а вот цифру могут повторятся:-(

dkameleon
На сайте с 09.12.2005
Offline
386
#8
verhmax:
у меня первая часть строки уникальная, текст типа "строка2" везде разный, а вот цифру могут повторятся:-(


$text = file_get_contents("file.txt");
$rows = explode("\n", $text);
$nums = array();
foreach($rows as $v) {
$cols = explode("|", $v);
$id = $cols[1];
$content = $cols[0];

$nums[$content] = $id;
}
natsort($nums);
foreach ($nums as $key => $cur) echo $key.":".$cur."<br>";
verhmax
На сайте с 01.12.2005
Offline
191
#9

ой, класс!!! спасибо Вам огромное! наконецто всё работает так как я хотел. я поменял в последнем варианте natsort на arsort так как нуждаюсь в обратной сортировке!

ВСЕМ, Спасибо Большое!!!

R
На сайте с 18.06.2007
Offline
67
#10

Не знаю в чем фишка строчки "$rows = explode("\n", $text);". Когда есть функция File($text) - абсолютно идентична предыдущей, разбивает файл по строкам.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий