Выход меньше ожидаемого после использования оператора инкремента - PullRequest
0 голосов
/ 03 ноября 2018

Я создаю класс abc и статическую переменную, а также две функции, имеющие имя setize, в котором я устанавливаю значение, и еще одну функцию, я создаю getsize для получения значения в функции getsize. Я увеличиваю значение, когда вызываю функцию, ее вывод должен быть 101 но вывод 100 почему

 <?php

Class abc {   // create a class 
  public static $a;

  static function getsize() {  make a function
    return self::$a++;   //increment a static variable
  }
  static function setsize($n) {
    self::$a=$n;  // set size of static variable
  }
}
abc::setsize(100);  // set value of static variable
echo abc::getsize();  //call getsize function output is 100 but it must be 
101 

1 Ответ

0 голосов
/ 03 ноября 2018

Все, что вам нужно сделать, это использовать предварительное увеличение для достижения желаемого результата. Это потому, что вы используете ++ с эхом. http://php.net/manual/en/language.operators.increment.php

Код: ( Демо )

Class abc{   // create a class 
    public static $a;

    static function getsize() {
        return ++self::$a;   //increment a static variable
    }
    static function setsize($n) {
        self::$a = $n;  // set size of static variable
    }
}
abc::setsize(100);  // set value of static variable
echo abc::getsize();  //call getsize function output is 100 but it must be 101
// output: 101

В более простой демонстрации: ( Демо )

$hundy = 100;
echo $hundy++;
echo "\n$hundy";
echo "\n---\n";
$hundy = 100;
echo ++$hundy;

Выход:

100
101
---
101
...