2015-07-16 2 views

ответ

14

Эта линия:

$i+++1+2+3+4; 

Говорит:

  • Increment $i
  • Добавить значение $iпредварительно приращение +1+2+3+4, но не магазин в результат в любом месте.

Отсюда $i == 2.

Если вы не хотите, чтобы игнорировать, вы должны сохранить результат:

$i = $i+++1+2+3+4; 
+0

Спасибо, имеет смысл. – Daan

2

Все это хорошо. Вы просто забыли назначение, так i влияет только ++ оператора:

<?php 
$i = 1; 
$x = $i+++1+2+3+4; 
echo "{$i} vs "{$x}"; 

вернется

2 vs 11 
2

Вы никогда не назначить законченную работу в любом месте:

Эти два функционально эквивалентны:

$i++; 
$i = $i + 1; 

оба будут увеличиваться $i 1, и сохранить это измененное значение в $i

С $i+++1+2+3+4 вы, по сути выполняя

($i++) + 1 + 2 + 3 + 4 

, который

$i = $i + 1; 
1 + 2 + 3 + 4; // useless, result not stored anywhere 

так Инкремент $i 1, сохраняет что $i, то другие дополнения. Но поскольку они нигде не спасаются, результат отбрасывается.

, если у вас

php > $i = 1; 
php > $i = $i+++1+2+3+4; 
     ^^^^^----add this 
php > echo $i; 
11 

тогда бы работала, как вы ожидали.

1

$i++ означает добавить 1 в $i.
и, как и python, значение +1+2+3+4 означает добавление значения $i pre increment в +1+2+3+4, но не храните его нигде (так что адрес памяти или что-то в этом роде ...).
, так что вы получаете только $i==2

Смежные вопросы