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
Форумы портала PHP.SU :: Версия для печати :: В классе ++ и +1 по разному работают
Форумы портала PHP.SU » » Объектно-ориентированное программирование » В классе ++ и +1 по разному работают

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

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

То и в конструкторе она увеличивается на единицу, то есть если она там равна 5 то при обращении к ней $class->level уже выведет 6 а не 5.
А если прописать :
то все работает как нужно, почему так?
2. caballero - 16 Января, 2014 - 12:48:34 - перейти к сообщению
а почему должно быть не так?
++ увеличивает переменную на 1 поэтому там 6

потрудитесь ознакомится с синтаксисом PHP начиная с арифметических операторов
3. Sanek_OS9 - 16 Января, 2014 - 12:50:58 - перейти к сообщению
caballero не должно там быть 6, я +1 добавляю не к $this->level а к $nextLevel. А точнее $this->level + 1. Перечитайте сообщение еще раз.
4. eai - 16 Января, 2014 - 12:53:49 - перейти к сообщению
Sanek_OS9 пишет:


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


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

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

Но в С++ так можено Улыбка
5. IllusionMH - 16 Января, 2014 - 13:02:43 - перейти к сообщению
Sanek_OS9 пишет:
я +1 добавляю не к $this->level а к $nextLevel

Операторы пред- и постинкремента действуют непосредственно на операнд.
И к $nextLevel вы ничего не прибавляете, вы задаете ей значение.
Изучайте основы.
6. esterio - 16 Января, 2014 - 14:40:43 - перейти к сообщению
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
7. Sanek_OS9 - 18 Января, 2014 - 10:58:14 - перейти к сообщению
Всем спасибо, раньше с этим не сталкивался просто. А при изучении основ не встречал этого.

 

Powered by ExBB FM 1.0 RC1