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]   

> Описание: Выполнение операции для элемента из цикла, соответствующего условию
mindcraft
Отправлено: 14 Марта, 2012 - 11:35:56
Post Id


Новичок


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


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




Здравствуйте.

Возникла такая проблема. Есть массив вида:
$big_arr[0][0]="1";
$big_arr[0][1]="2012-03-13 20:10:00";
$big_arr[0][2]="параметр";
$big_arr[1][0]="2";
$big_arr[1][1]="2012-03-13 20:12:00";
$big_arr[1][2]="параметр";
$big_arr[1][0]="3";
$big_arr[1][1]="2012-03-13 21:15:00";
$big_arr[1][2]="параметр";

В цикле я разбираю массив и пишу в разные таблицы БД. Например:
$big_arr[0][0]="1" - значит пишу в таблицу tab1,
$big_arr[1][0]="2" - значит пишу в таблицу tab2 и т.д.

Все таблицы (tab1, tab2 и т.п.) вида:
ID сеанса | Дата/время события | Параметр

При этом, если в одном из массивов вложенных в массив $big_arr есть значение даты/времени больше некого, то я должен для данной строки завести новый сеанс, т.е. изменить ID сеанса и последующие строки писать с ним.

Иными словами:
иду по массиву $big_arr
PHP:
скопировать код в буфер обмена
  1. foreach($big_array as $value){
  2.  
  3. while($validtime>$value[1]){ //пока некое дата/время больше имеющегося, новый сеанс не нужен
  4. $newsess = 0;
  5. }
  6.  
  7. if($validtime<$value[1]){ //если меньше, то нужен
  8. $newsess = 1;
  9. $newstarttime = $value[1];
  10. }
  11.  
  12. if($newsess==1){
  13. //завожу новый сеанс, получаю его id, передаю его в функцию записи данных
  14. $sess = new Sessions;
  15. $sess->User_ID  = $user_info->ID;
  16. $sess->Start_Time = $newstarttime;
  17. $sess->save();
  18.  
  19. $sid = $sess->Session_ID;
  20.  
  21. $this->dataInsert($value, $sid);
  22. }
  23. else{
  24. $this->dataInsert($value, $sid);
  25. }
  26.  
  27. }


Но данный код не работает. Никаких записей в бд не добавляется. В чем может быть проблема. Заранее спасибо.
 
 Top
Dezmont
Отправлено: 14 Марта, 2012 - 14:12:06
Post Id



Частый гость


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


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




Строка 3 - бесконечный цикл, если $validtime>$value[1]. Как я понял из этого куска...

Сделайте вот так:
PHP:
скопировать код в буфер обмена
  1. if($validtime>$value[1]){
  2.    $newsess = 0;
  3. }
  4. else{
  5.    $newsess = 1;
  6.    $newstarttime = $value[1];
  7. }

И определитесь, какое условие должно выполняться, если $validtime=$value[1].
 
 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