Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.06.2011, 16:33   #1
kakawkin
Форумчанин
 
Регистрация: 21.09.2009
Сообщений: 431
По умолчанию Работа с файлов в цикле

К примеру есть текстовый фаил 1.txt с 5 строками. Надо вывести каждую строку на страницу.
Я в php нуб ( delphi мой конек ) и погуглив определился вот так:

Код:
<? php
$arr = file( "file.txt" ); 
for ($i = 1; $i <= count($arr); $i++) {
print $arr[$i];
}
?>
Правильно сделано или что-то не в порядке тут ?
kakawkin вне форума Ответить с цитированием
Старый 15.06.2011, 16:46   #2
nec117
Форумчанин
 
Регистрация: 01.10.2008
Сообщений: 266
По умолчанию

Код:
$filename = "1.txt";
$handle = fopen($filename, "r");
$date = fread($handle, filesize($filename));
fclose($handle);
$arr = explode("\r\n", $data);
foreach($arr as $a) echo $a . "<br />";
nec117 вне форума Ответить с цитированием
Старый 15.06.2011, 16:48   #3
kakawkin
Форумчанин
 
Регистрация: 21.09.2009
Сообщений: 431
По умолчанию

мне цикл понадобитсья так как потмо буду в цикле операции проделывать еще с выведеннйо строкой из файла.
не надо узнать именно что не хватает в моем примере
kakawkin вне форума Ответить с цитированием
Старый 15.06.2011, 16:50   #4
nec117
Форумчанин
 
Регистрация: 01.10.2008
Сообщений: 266
По умолчанию

foreach($arr as $a) - это разве не цикл?
nec117 вне форума Ответить с цитированием
Старый 15.06.2011, 17:07   #5
kakawkin
Форумчанин
 
Регистрация: 21.09.2009
Сообщений: 431
По умолчанию

я не знаю. пишу же что знаю delphi. нашел аналоги ператоров и селал свой пример.
просто ваш пример я не понимаю.

Значит мой косячный да ?
kakawkin вне форума Ответить с цитированием
Старый 15.06.2011, 17:08   #6
graymaster
Форумчанин
 
Аватар для graymaster
 
Регистрация: 03.05.2011
Сообщений: 158
По умолчанию

А чем конкретно плох вариант ТС ? Я не имею в виду фичи типа "echo" и иже с ними. Он должен вроде как быть рабочим. Несколько странным отсутствием общепринятых пхп-функций, но рабочим.
ТС - обычно в пхп используется echo для вывода (обратите внимение, echo не добавляет эол в конце строки, это нужно делать самостоятельно, но работат быстрее, чем print), да и чтением всего файла в массив мало кто пользуется. Обычно читают всё в строку, и потом с ней уже работают. Если недостаточно памяти для обработки всего файла сразу, то открывают файл, читают его построчно, (пхп-нэт подскажет, как это делать, fopen , fgets и т.д.), и, построчно же, обрабатывают. Не забудьте только потом его закрыть.

Обратите внимание, куда вы будете выводить результаты- если в текстовый файл, то всё ок, если на html-страницу, тогда выводите <br/> после каждой строки, т.к. в html именно так переносятся строки. Эол не поможет (хотя и будет нелишним, потому что при просмотре сорса страницы переносы строк осуществляет именно эол (\n или \r\n в зависимости от ОС)

В варианте nec117 - явная некросплатформенность.
На лине будет спотыкаться. Принимайте во внимание различное разделение строк на винде, лине и маке, иначе можно на этом словить багов из ниоткуда.

Советую хотя бы (если не пользоваться фичами типа php_eolов) использовать что-то типа
$t=strtr($t,"\r","\n");
$t=str_replace("\n\n","\n",$t);

и в нужный момент потом перебросить в нужный эол при необходимости:
$t=str_replace("\n",$нужный_эол,$t) ;
Ну, или
$t=nl2br($t);
если это html и вы так любите излишние языковые фичи.

Последний раз редактировалось graymaster; 15.06.2011 в 17:22.
graymaster вне форума Ответить с цитированием
Старый 15.06.2011, 17:21   #7
nec117
Форумчанин
 
Регистрация: 01.10.2008
Сообщений: 266
По умолчанию

graymaster в каком же лине это будет спотыкаться и на чем?
nec117 вне форума Ответить с цитированием
Старый 15.06.2011, 17:36   #8
graymaster
Форумчанин
 
Аватар для graymaster
 
Регистрация: 03.05.2011
Сообщений: 158
По умолчанию

На вскидку и практику - дженту. А вообще - на любом. Не забывайте - новая строка в лине - это \n а не \r\n. Т.е. ваш эксплод не раделит строки просто, и выведет весь контент как одну. Баги словить несложно не только на php. Сейчас только что перезапустил обработчик - не обратил внимание, что неизвестные умники часть исходного файла с данными сделали с \n, а часть - с \r\n, а там - имёна файлов. Список замечательно прочитался по строкам с добавлением к некоторым из них в конце \r. Файлы, соответственно, не открылись, просто игнорились, т.к. таких файлов, в общем-то, не существует (лишний символ в конце имени). Вот так. 12 часов работы "теслы" - коту под хвост. Язык C++.
graymaster вне форума Ответить с цитированием
Старый 15.06.2011, 17:56   #9
kakawkin
Форумчанин
 
Регистрация: 21.09.2009
Сообщений: 431
По умолчанию

существует ли другой способ считывания построчно кроме как запихать все в массив и работать уже с ним ?

Последний раз редактировалось kakawkin; 15.06.2011 в 18:59.
kakawkin вне форума Ответить с цитированием
Старый 15.06.2011, 19:17   #10
graymaster
Форумчанин
 
Аватар для graymaster
 
Регистрация: 03.05.2011
Сообщений: 158
По умолчанию

Да, конечно же.
PHP код:
// Открываем файл для чтения
$filePointer fopen('file.txt''r');
// Если получилось открыть, то
if ($filePointer) {
// Пока не дойдём до eof
    
while (!feof($filePointer)) {
// Читаем строку
        
$str fgets($filePointer);
// Выводим строку
        
echo $str PHP_EOL;
    }
}
fclose($filePointer); 
Думаю, всё понятно

Или цикл обязательно должен быть for ?

Последний раз редактировалось graymaster; 15.06.2011 в 19:22.
graymaster вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с символами в цикле cheef PHP 2 14.01.2011 18:21
работа с именами файлов серг Общие вопросы C/C++ 1 25.02.2010 15:06
Работа с каталогом тхт файлов. littlecoder Общие вопросы Delphi 4 17.12.2008 22:47
C++ Builder Работа со строками файлов Ya_Nika C++ Builder 2 08.03.2008 02:47
Работа с ФТП: Скачка файлов Horror Общие вопросы .NET 4 03.03.2008 14:50