|
|
|
| Ответ 004 на задачу N 7.
С условиями задачи можно ознакомится по ссылке.
Здравствуйте! Укажите, пожалуйста, ошибки и недочёты, я ведь всего второй день, как изучаю PHP.
Файл mixture.php :
<?php
//скрипт mixture.php
$filename='1.txt';
//START чтение файла в массив
$massiv=file($filename);
//Рассортировываем массив в случайном порядке
shuffle($massiv);
//Открываем файл для записи
$file=fopen($filename,"w");
//Записываем в файл
foreach ($massiv as $line_num => $line)
{
fwrite($file,$line);
}
//Закрываем файл
fclose($file);
?>
|
++++++++++++++++++++++++++++++++++++++++
Файл ordernum.php :
<?php
//скрипт ordernum.php
$filename='1.txt';
//START чтение файла в массив
$massiv=file($filename);
//Сортируем массив
natsort($massiv);
//Открываем файл для записи
$file=fopen($filename,"w");
//Записываем в файл
foreach ($massiv as $line_num => $line)
{
fwrite($file,$line);
}
//Закрываем файл
fclose($file);
?>
|
================================================
Файл orderalph.php :
<?php
//скрипт orderalph.php
$filename='1.txt';
//START чтение файла в массив
$massiv=file($filename);
foreach ($massiv as $line_num => $line)
{
//Разбиваем строку на 2 части
$tmp=explode(" ",$line);
//Порядковый номер языка
$massivtmp1[$line_num]=$tmp[0];
//Название языка
$massivtmp2[$line_num]=$tmp[1];
//Переводим названия языков в нижний регистр для
//правильной сортировки по алфавиту
$massivtmp3[$line_num]=strtolower($tmp[1]);
}
//Сортировка по алфавиту
array_multisort($massivtmp3,$massivtmp1,$massivtmp2);
//Открываем файл для записи
$file=fopen($filename,"w");
//Записываем в файл порядковый номер и название языка
foreach ($massivtmp2 as $line_num => $line)
{
$stroka=sprintf("%s %s",$massivtmp1[$line_num],$line);
fwrite($file,$stroka);
}
//Закрываем файл
fclose($file);
?>
|
================================================================
http://www.softtime.ru/info/task.php?id_article=77 | |
|
|
|
|
|
|
|
для: SoftTime
(17.02.2006 в 13:14)
| | Очень хорошая читабельность и построение программы, однако $massivtmp3 следует избегать - т.е. лучше стараться давать переменным осмысленные имена. Однако после использования mixture.php получил следующее
1 Fort
2 PHP
7 C++
6 Perl
9 Fortran
10 Assembler5 Java
3 JavaScript
4 ASP.NET
8 Pascal
|
Это связано с тем, что в моём файле последняя запись не завершалась переводом строки, скрипт это не учитывает. Хм... однако скрипт orderalph.php привёл к результату
4 ASP.NET10 Assembler7 C++1 Fort9 Fortran5 Java3 JavaScript8 Pascal6 Perl2 PHP
|
Хм... пропали почему-то переводы строк. Вы какую версию PHP использовали и где тестировали скрипт? Меня удивляет что это второй случай... | |
|
|
|
|
автор: Andrey_sam (20.02.2006 в 17:38) |
|
|
для: cheops
(20.02.2006 в 00:16)
| | Здравствуйте, cheops.
Я тестировал эти скрипты на Денвер-2 2005-10-07. Версия PHP 4.4.0. Операционная система Windows 2000 (если это имеет какое-либо значение). Всё работает нормально.
Напишите, пожалуйста, в чём может быть проблема. | |
|
|
|
|
|
|
|
для: Andrey_sam
(20.02.2006 в 17:38)
| | Да, это судя по всему особенности функции array_multisort(), которая в разных версиях либо сохраняет переводы строк, либо удаляет их. Для того, чтобы не зависеть от реализации библиотек и версии PHP, лучше явно удалять все пробельные символы с начала и конца строки при помощи функции trim() и присоединять переводы строк \r\n при записи в файл явно. | |
|
|
|
|
автор: Andrey_sam (21.02.2006 в 00:09) |
|
|
для: cheops
(20.02.2006 в 22:09)
| | cheops, спасибо за помощь! | |
|
|
|