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

Форум PHP

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

 

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

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

тема: Лишние элементы в массиве
 
 автор: Drago   (31.08.2005 в 15:21)   письмо автору
 
 

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

Вот функция:

function check_status()
  {
   $users=file("user.php"); //считываем список вошедших вида "$name|$ip|time()"
   foreach ($users as $i => $value)
   {
    $par=explode("|",$value);
    $time_now=time();
    if (trim($par[2])<($time_now-20)) //сравниваем время 
     unset($users[$i]);
    else
    {
     if ($par[0]==$_COOKIE['name'])
     {
      $par[2]=$time_now;
     } 
     $users[$i]=$par[0]."|".$par[1]."|".$par[2];
    }  
   }
   $hdl=fopen("user.php","w");
   print_r ($users); //здесь хорошо видно, как изменяеться индекс при обновлении
   foreach ($users as $n => $val)
   {
    if ($users[$n])
    fwrite($hdl,($val."\n")); //записываем обратно в файл
   }
   fclose($hdl);    
  }


Как решить эту проблему?

   
 
 автор: cheops   (31.08.2005 в 19:06)   письмо автору
 
   для: Drago   (31.08.2005 в 15:21)
 

$par[2], а следовательно и $val уже имеют в конце перевод строки и код
<?php
  fwrite
($hdl,($val."\n")); //записываем обратно в файл
?>

приводит к появлению пустот, убирать "\n" отсюда не совсем желательно... лучше срезу после строки
<?php
$par
=explode("|",$value);
?>

пропустить последний элемент (т.е. $par[2]) через функцию trim(), которая отчечёт пробельные символы, в том числе и перевод строки
<?php
  $par
[2] = trim($par[2]);
?>

   
 
 автор: Drago   (01.09.2005 в 01:25)   письмо автору
 
   для: cheops   (31.08.2005 в 19:06)
 

Спасибо!
Когда пишешь, вроде все по десять раз проверяешь, а какая-нибудь мелочь, все равно пролезет и будет на нервы действовать. :)

   
Rambler's Top100
вверх

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