Strict Standards: Resource ID#27 used as offset, casting to integer (27) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#29 used as offset, casting to integer (29) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#30 used as offset, casting to integer (30) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Версия для печати :: Сортировка массивов
ТвойWeb » WebMaster класс » PHP/Perl » Сортировка массивов

Страниц (1): [1]
 

1. Davinchi - 10 Февраля, 2009 - 14:08:01 - перейти к сообщению
Подскажите пожалуйста как отсортировать значения из файла

CODE:

id1|dfgsg|3
id5|rrnee|2
id7|c bgv|4
id9|vdgfg|4
id0|fd bb|5

что бы при записи отсортированных значений в другой файл получилось это
CODE:

id 0 |fd bb| 5
id 9 |vdgfg| 4
id 7 |c bgv| 4
id 1 |dfgsg| 3
id 5 |rrnee| 2
2. Davinchi - 11 Февраля, 2009 - 00:01:03 - перейти к сообщению
Еще вопрос, как сортируется по значениям ассоциативный массив, если у двух разных ключей одинаковые значения?
3. Furax - 11 Февраля, 2009 - 04:39:13 - перейти к сообщению
Я бы сделал на регулярных выражениях:
CODE:
<?php

header('content-type: text/plain; charset=windows-1251');

$result = array();
$matches = array();
$file = fopen('file.txt', 'r');

while ($line = fgets($file))
if (preg_match('/^id(\d+)(\|[^\|]+\|)(\d+)$/', trim($line), $matches))
$result[(int)$matches[3]][] = "id $matches[1] $matches[2] $matches[3]";
fclose($file);

foreach ($result as $key => $value)
$result[$key] = implode("\n", $value);

krsort($result);

echo implode("\n", $result);

?>
Этот код оставляет несколько значений с общим ключом в порядке следования в файле, однако, по-моему, очевидно, как тут добавить ещё 1 ключ и отсортировать по нему, если надо.

Что касается сортировки в случае нескольких одинаковых значений, то тут, по-моему, ничего не гарантируется:
CODE:
array( 4, 2, 5, 4, 1, 4 )
После сортировки выглядит так:
CODE:
Array
(
[4] => 1
[1] => 2
[3] => 4
[0] => 4
[5] => 4
[2] => 5
)
4. Davinchi - 14 Февраля, 2009 - 16:13:59 - перейти к сообщению
Спасибо, подошла обычная сортировка

Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0256]     [ Gzipped ]



Notice: ob_end_flush(): failed to send buffer of ob_gzhandler (1) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/page_tail.php on line 33