Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Вывод из двух и более файлов

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
wenuser
Отправлено: 01 Июля, 2010 - 16:51:09
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




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

Вот что-то с этим мучаюсь и не понимаю как вывести не по очереди содержимое файлов, а поочередно каждую строчку.

<?php
$afp = fopen("text1.txt", "r"); // Открываем файл в режиме чтения
$bfp = fopen("text2.txt", "r"); // Открываем файл в режиме чтения
if ($afp)
{
while (!feof($afp))
{
$firsttext = fgets($afp);

echo $firsttext."<br /><p>";
}
}
if ($bfp)
{
while (!feof($bfp))
{
$secondtext = fgets($bfp);
echo $secondtext."<br /><p>";
}
}

else echo "Ошибка при открытии файла";

?>
 
 Top
SAD Модератор
Отправлено: 01 Июля, 2010 - 16:55:31
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




запишите построчно каждый файл в 2 массива, таким образом
PHP:
скопировать код в буфер обмена
  1. $src = fopen('1.txt',"r");
  2. while (!feof ($src)) {
  3.     $mas_1[] = fgets($src,464564);
  4. }
  5. fclose($src); // таким же образом второй файл

а потом в цикле вида
PHP:
скопировать код в буфер обмена
  1. for ($i = 0; $i < sizeof($mas_1); $i++) {
  2.     echo "{$mas_1[$i]}<br>{$mas_2[$i]}<br>";
  3. }

выводите
 
 Top
wenuser
Отправлено: 01 Июля, 2010 - 17:28:09
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




Это как-то так должно быть? Что-то все равно выводится сначала первый файл, а потом второй.
CODE (htmlphp):
скопировать код в буфер обмена
  1. $arc = fopen('text1.txt',"r");
  2. while (!feof ($arc)) {
  3.     $mas_1[] = fgets($arc, 999);
  4. }
  5.  
  6. $brc = fopen('text2.txt',"r");
  7. while (!feof ($brc)) {
  8.     $mas_1[] = fgets($brc, 999);
  9. }
  10.  
  11.  
  12. for ($i = 0; $i < sizeof($mas_1); $i++) {
  13.    echo "{$mas_1[$i]}<br>{$mas_2[$i]}<br>";
  14. }
  15. fclose($arc);
  16. fclose($brc);
 
 Top
SAD Модератор
Отправлено: 01 Июля, 2010 - 17:39:24
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




вы закройте fclose раньше чем делаете вывод
 
 Top
Мелкий Супермодератор
Отправлено: 01 Июля, 2010 - 17:44:29
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




wenuser, я чего-то не понимаю, или вы оба файла читаете в один и тот же массив $mas_1[]?


-----
PostgreSQL DBA
 
 Top
Uchkuma
Отправлено: 01 Июля, 2010 - 17:47:14
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




PHP:
скопировать код в буфер обмена
  1. $afp = fopen("text1.txt", "r"); // Открываем файл в режиме чтения
  2. $bfp = fopen("text2.txt", "r"); // Открываем файл в режиме чтения
  3. if($afp AND $bfp){
  4. while(!feof($afp) AND !feof($afp)){
  5. $firsttext = fgets($afp);
  6. $secondtext = fgets($bfp);
  7. echo $firsttext."<br>".$secondtext."<br>";
  8. }
  9. }

так запросто сработает.
 
 Top
wenuser
Отправлено: 01 Июля, 2010 - 18:01:07
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




Всем спасибо. Разобрался. Все работает как нужно. )))
 
 Top
DeepVarvar Супермодератор
Отправлено: 01 Июля, 2010 - 18:20:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




еще проще, но с условием что в обоих файлах одинаковое кол-во строк:

$mas1=file($file1);
$mas2=file($file2);
for($c=0;$c<count($mas1);$c++) {
print $mas1[$c].'<br>'.$mas2[$c].'<br>';
}

одиночные кавычки смените, я с тлф пишу..
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB