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 :: В классе ++ и +1 по разному работают

 PHP.SU

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


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

> Описание: Вроде одно и то же....
Sanek_OS9
Отправлено: 16 Января, 2014 - 12:44:27
Post Id



Гость


Покинул форум
Сообщений всего: 115
Дата рег-ции: Окт. 2012  
Откуда: Украина


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




Здравствуйте, столкнулся с такой не поняткой, в классе есть переменная $this->level в методе к этой переменной мне нужно добавить +1 и записать в базу.
Если в методе я использую:

То и в конструкторе она увеличивается на единицу, то есть если она там равна 5 то при обращении к ней $class->level уже выведет 6 а не 5.
А если прописать :
то все работает как нужно, почему так?

(Отредактировано автором: 16 Января, 2014 - 12:45:36)

 
 Top
caballero
Отправлено: 16 Января, 2014 - 12:48:34
Post Id


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


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


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




а почему должно быть не так?
++ увеличивает переменную на 1 поэтому там 6

потрудитесь ознакомится с синтаксисом PHP начиная с арифметических операторов


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Sanek_OS9
Отправлено: 16 Января, 2014 - 12:50:58
Post Id



Гость


Покинул форум
Сообщений всего: 115
Дата рег-ции: Окт. 2012  
Откуда: Украина


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




caballero не должно там быть 6, я +1 добавляю не к $this->level а к $nextLevel. А точнее $this->level + 1. Перечитайте сообщение еще раз.
 
 Top
eai
Отправлено: 16 Января, 2014 - 12:53:49
Post Id



Частый посетитель


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


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




Sanek_OS9 пишет:


Означает (если ниче не путаю)
PHP:
скопировать код в буфер обмена
  1.  
  2. $nextLevel = $this->level;
  3. $this->level = $this->level + 1;
  4.  


Т.е. другими словами если ++ ставить в конце то он обладает самым низким приоритетом в данном выражении

Не помню разрешено ли в PHP писать
PHP:
скопировать код в буфер обмена
  1.  
  2. $nextLevel = ++$this->level;
  3.  

Но в С++ так можено Улыбка
 
 Top
IllusionMH
Отправлено: 16 Января, 2014 - 13:02:43
Post Id



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


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


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




Sanek_OS9 пишет:
я +1 добавляю не к $this->level а к $nextLevel

Операторы пред- и постинкремента действуют непосредственно на операнд.
И к $nextLevel вы ничего не прибавляете, вы задаете ей значение.
Изучайте основы.
 
 Top
esterio
Отправлено: 16 Января, 2014 - 14:40:43
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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




Sanek_OS9
Пример:
PHP:
скопировать код в буфер обмена
  1. $a = 0;
  2. echo $a; // 0
  3. $b = $a++;
  4. echo $a; // 1
  5. echo $b; // 0
  6. $c = ++$a;
  7. echo $a; // 2
  8. echo $b; // 0
  9. echo $c; // 2

(Отредактировано автором: 16 Января, 2014 - 14:40:55)

 
 Top
Sanek_OS9
Отправлено: 18 Января, 2014 - 10:58:14
Post Id



Гость


Покинул форум
Сообщений всего: 115
Дата рег-ции: Окт. 2012  
Откуда: Украина


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




Всем спасибо, раньше с этим не сталкивался просто. А при изучении основ не встречал этого.
 
 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