Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как вынести запись в файл за пределы цикла.
 
 автор: zip   (12.04.2006 в 13:25)   письмо автору
 
 

Есть цикл. Проверка есть ли в массиве такая строка, если нет, то записываем. Но я не могу саму запись этой строки вынести за пределы цикла.


foreach($file as $string) {
if($dt==rtrim($string)) {
return false;
}
else {
$file=fopen("data.dat",'a');
fputs($file,$dt."\r\n");
fclose ($file);
}
}
}

   
 
 автор: Drago   (12.04.2006 в 15:01)   письмо автору
 
   для: zip   (12.04.2006 в 13:25)
 


<?php
if (in_array (rtrim ($dt), $file) === false)
{
  
$file=fopen("data.dat",'a'); 
  
fputs($file,$dt."\r\n"); 
  
fclose ($file);
}
else
  return 
false;
?>

   
 
 автор: cheops   (12.04.2006 в 15:04)   письмо автору
 
   для: zip   (12.04.2006 в 13:25)
 

Можно поступить следующим образом
<?php
  $arr_dt 
= array()
  foreach(
$file as $string)
  { 
    if(
$dt==rtrim($string))
    { 
      return 
false
    } 
    else
    { 
      
$arr_dt[] = $dt;
    } 
  } 
  
$file=fopen("data.dat",'a'); 
  
fputs($file,implode("\r\n",$arr_dt)); 
  
fclose ($file); 
?>

   
 
 автор: zIP   (12.04.2006 в 15:09)   письмо автору
 
   для: cheops   (12.04.2006 в 15:04)
 

Иными словами нужно в цикле присвоить значение переменной и вынести ее за пределы цикла?

Так корректно?
<?
function getip($dt) {
  
$file=file("data.dat");
      foreach(
$file as $string) {
        if(
$dt==rtrim($string)) {
          return 
false;
          }
       else {
     
$ip $dt;
  }
}
  if (
$ip $dt) {
    
$file=fopen("data.dat",'a');
      
fputs($file,$ip."\r\n");
    
fclose ($file);
  }
}
?>

   
 
 автор: cheops   (12.04.2006 в 15:20)   письмо автору
 
   для: zIP   (12.04.2006 в 15:09)
 

Если работает, то корректно :))).

   
 
 автор: Trianon   (12.04.2006 в 15:20)   письмо автору
 
   для: zIP   (12.04.2006 в 15:09)
 

Можно и проще:
<? 
function getip($dt
{
  foreach(
file("data.dat") as $string)
    if(
$dt == rtrim($string))
          return 
false

  
$file=fopen("data.dat""a"); 
    
fputs($file"$dt\r\n"); 
  
fclose ($file); 
  return 
true;

?>


P.S. Странное название для функции.

   
 
 автор: zIP   (12.04.2006 в 15:36)   письмо автору
 
   для: Trianon   (12.04.2006 в 15:20)
 

>P.S. Странное название для функции.

Да вы что, сговорились, что ли? :).

А как можно подсчитать внутри этой функции количество строк в файле data.dat не через count()?

   
 
 автор: Trianon   (12.04.2006 в 15:39)   письмо автору
 
   для: zIP   (12.04.2006 в 15:36)
 

А чем count не угодил?
Можно в цикле построчно прочесть файл и посчитать число затраченных циклов.
Вообще не читая файл подсчитать число строк нельзя.

С кем сговорился? Я вроде первый :)

   
 
 автор: zIP   (12.04.2006 в 15:43)   письмо автору
 
   для: Trianon   (12.04.2006 в 15:39)
 

>А чем count не угодил?
>Можно в цикле построчно прочесть файл и посчитать число
>затраченных циклов.

Так цикл же есть. Сравнивает строки с определенным значением

foreach()


. Как это можно использовать?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования