Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сортировка массива... Трабла... простой sort() 
V
    Опции темы
immax
Дата 1.11.2007, 01:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 19.6.2005

Репутация: 1
Всего: 2



Доброго всем времени суток. Чтобы упростить объяснение проблемы, приведу сразу пример:
Есть скажем файл text.txt  следующего содержания:
Код

c
a
b
d
a

Всё это надо отсортировать по алфавиту.
Пишу простейший код:
Код

$file=file("text.txt");
sort($file);
$f=fopen('text.txt', 'w+');
while (list($k, $v) = each($file)) {fputs($f, $v);}
fclose($f);

Результат вот такой:
Код

aa
b
c
d



При сортировке массива две строки слепливаются в одну. При этом одна строка остаётся пустой. Как этого избежать? Это, по всему видимому, из-за отсутствия переноса в последней строке исходного файла. что посоветуете, чтобы сортировка всегда проходила гладко?

Это сообщение отредактировал(а) immax - 1.11.2007, 01:44
--------------------
Would yo kindly...?
PM MAIL   Вверх
Sannis
Дата 1.11.2007, 01:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 14.8.2007
Где: Москва

Репутация: 6
Всего: 13



Зависит от цели и остального кода smile 

Можно попробывать заменить
Код

fputs($f, $v);

на
Код

fputs($f, str_replace("\n", "", $v)."\n");

или
Код

fputs($f, trim($v)."\n");

В таком случае правда в конце файла будет (возможно лишний) перевод строки.


--------------------
Я Критик Джим, раньше писал моды для IPB 1.3.x-2.3.x, а теперь продвигаю Node.js в массы.
PM MAIL WWW   Вверх
SelenIT
Дата 1.11.2007, 02:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 32
Всего: 401



Код

$lines = array_map('trim', file("text.txt"));
sort($lines);
file_put_contents("text.txt", implode("\n", $lines));



--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
immax
Дата 1.11.2007, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 19.6.2005

Репутация: 1
Всего: 2



2SelenIT
Гхм, насколько проще, а выполняется у меня чуть медленнее, чем с циклом... но главное работает как надо... Спасибо, краткость и в коде-сестра таланта =)
ЗЫ
Не все ещё перешли на пхп5 =)

Это сообщение отредактировал(а) immax - 1.11.2007, 21:57
--------------------
Would yo kindly...?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0668 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.