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]   

> Описание: if ((int)$value['nright'] >= (int)$this->ParentNright)
spolischook
Отправлено: 08 Августа, 2011 - 15:04:50
Post Id


Новичок


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


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




Всем привет. Это моя первая тема, прошу не судить строго.
У меня проблема, и я уже отчаялся. Бьюсь уже не первый день.
Код:
CODE (htmlphp):
скопировать код в буфер обмена
  1. foreach($this->categories as $key=>$value){
  2.         if ($key == 1) {
  3.                 echo $this->i." ParentNright - "; var_dump($this->categories[$key]['nright']); echo " value[nright] = "; var_dump($value['nright']); echo "<br />";
  4.         }  
  5.         if ((int)$value['nright'] == (int)$this->categories[(int)$this->parent_id]['nright']t){
  6.                 $this->categories[$key]['nright'] = $this->categories[$key]['nright'] + 2;
  7.                 echo ($key == 1) ?  "YESS!!!<br />" : '';
  8.         }
  9. }

$this->i - счетчик вхождений.
Вывод следующий:
CODE (htmlphp):
скопировать код в буфер обмена
  1. 1 ParentNright - string(1) "8" value[nright] = string(1) "8"
  2. YESS!!!
  3. 2 ParentNright - int(10) value[nright] = int(10)
  4. 3 ParentNright - int(10) value[nright] = int(10)
  5. 4 ParentNright - int(10) value[nright] = int(10)
  6. YESS!!!
  7. 5 ParentNright - int(12) value[nright] = int(12)
  8. 6 ParentNright - int(12) value[nright] = int(12)
  9. 7 ParentNright - int(12) value[nright] = int(12)
  10. 8 ParentNright - int(12) value[nright] = int(12)
  11. 9 ParentNright - int(12) value[nright] = int(12)
  12. 10 ParentNright - int(12) value[nright] = int(12)
  13. 11 ParentNright - int(12) value[nright] = int(12)
  14. 12 ParentNright - int(12) value[nright] = int(12)
  15. 13 ParentNright - int(12) value[nright] = int(12)
  16. 14 ParentNright - int(12) value[nright] = int(12)
  17. YESS!!!
  18. 15 ParentNright - int(14) value[nright] = int(14)
  19. 16 ParentNright - int(14) value[nright] = int(14)
  20. 17 ParentNright - int(14) value[nright] = int(14)
  21. 18 ParentNright - int(14) value[nright] = int(14)
  22. 19 ParentNright - int(14) value[nright] = int(14)
  23. 20 ParentNright - int(14) value[nright] = int(14)
  24. 21 ParentNright - int(14) value[nright] = int(14)
  25. 22 ParentNright - int(14) value[nright] = int(14)
  26. 23 ParentNright - int(14) value[nright] = int(14)
  27. 24 ParentNright - int(14) value[nright] = int(14)
  28. 25 ParentNright - int(14) value[nright] = int(14)
  29. 26 ParentNright - int(14) value[nright] = int(14)
  30. 27 ParentNright - int(14) value[nright] = int(14)
  31. YESS!!!
  32. 28 ParentNright - int(16) value[nright] = int(16)
  33. ....... и т. д.

Каждый раз он сравнивает два значения и как будто бы не видит их равенства, и в один прекрассный момент он замечает что переменные таки равны.
Как видите типы данных также не отличаются. Я уже измотался вовсе, спать толком не могу. Помогите, в чем может быть проблема.
 
 Top
EuGen Администратор
Отправлено: 08 Августа, 2011 - 15:11:03
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




Ключевое сравнение, я думаю, $key==1 - у Вас ведь в зависимости от этого строится логика (в том числе, вывода "YES") - точнее сказать трудно, так как нет набора данных.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
spolischook
Отправлено: 08 Августа, 2011 - 15:50:37
Post Id


Новичок


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


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




EuGen пишет:
Ключевое сравнение, я думаю, $key==1 - у Вас ведь в зависимости от этого строится логика (в том числе, вывода "YES") - точнее сказать трудно, так как нет набора данных.

Проводя рефакторинг, скрипт наполовину заработал, попробую отыскать правду, в сравнении со старым кодом...
(Добавление)
Ошибка детская. Растерялся
Дело в том что в коде я сравниваю
$this->categories[(int)$this->parent_id]['nright']
а вывожу в хтмл:
$this->categories[$key]['nright']
из-за этого не мог понять почему он не входит в месте условия if
Далее интереснее...
В первый раз он выводит:
string(1) "8"
а в дальнейшем после добавления 2 он становится:
int(10)
Но уже поздно, т.к. при сравнении разных типов условие if даст отрицательный результат.
Не вдаваясь в детали, проблема была в неправильно хранящемся типе данных, а путаница из-за неправильной отладки выводившейся в хтмл.
Спасибо EuGen что не оставил тему без внимания, к сожалению кнопка спасибо не работает, я еще не так много сообщений написал.
 
 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