2012-02-10 2 views
0

Пожалуйста, предоставьте мне правильное решение этого сценария с объяснением:Как мы можем определить Increment и декремента в PHP

$a = 5; 
$c = $a-- + $a-- + --$a - --$a; 
echo $c; 

Что будет значение $c = 10; Зачем?

+2

Что вы подразумеваете под "решением"? – Bojangles

+0

На самом деле я просто хочу подтвердить, что то, что будет выполнено первым. pre декремент или пост декремент ... – PPS

+1

Почему бы вам просто не выполнить его? – jeroen

ответ

2

++ и -- производят одинаковый конечный результат - приращение или уменьшение переменной - применяется ли она раньше после имени переменной, разница возникает, когда она используется как часть более крупного оператора.

Рассмотрим это:

$a = 5; 
$a--; 
echo $a; // 4 

$a = 5; 
--$a; 
echo $a; // 4 

Итак, вы видите, что они производят один и тот же конечный результат - $a получить уменьшается на единицу. Я уверен, что это то, чего вы ожидали.

Однако:

$a = 5; 
echo $a--; // 5 
echo $a; // 4 

$a = 5; 
echo --$a; // 4 
echo $a; // 4 

В этом примере, $a по-прежнему уменьшается после операции, но порядок, в котором декремент происходит и значение используется отличается. Для $a-- значение используется до декремент, а для --$a значение используется после.

Так для примера кода:

$a = 5; // Operations in order of occurence: 
$c = $a-- // $c = 5;   $a = 5 - 1 == 4; 
    + $a-- // $c = 5 + 4 == 9; $a = 4 - 1 == 3; 
    + --$a // $a = 3 - 1 == 2; $c = 9 + 2 == 11; 
    - --$a; // $a = 2 - 1 == 1; $c = 11 - 1 == 10; 
echo $c; // 10 
+0

и снова, люди. вы отвечаете неправильно! first - $ a дает 2 не 3 – dmitry

+0

@ confused-demon Я знаю, что я только что понял и отредактировал. – DaveRandom

+0

Этот ответ неверен. Теперь вы ищете ссылку на правильный ответ. – DaveRandom

1
$a = 5 ; // $a = 5 
$c = $a-- // $c = 5 $a = 4 
+ 
$a-- // $c = 9 $a = 3 
+ 
--$a // $c = 11 $a = 2 
- 
--$a // $c = 10 $a = 1 
; 
echo $c ; // $c = 10 
1

$a-- Выражение является пост-декремент, что означает, что сначала возвращает $a, а затем уменьшает $a на единицу. Выражение --$a является предварительным декрементом, который сначала уменьшает $a по одному, а затем возвращает $a.

Принимая во внимание это, это означает $c = 5 + 4 + 2 - 1 = 10.

4

От прочтения сценария выше, и следующее утверждений

$var++, $var-- //Use value then apply incremnet, decrement 
++$var, --$var // Increment, decrement then use vakue 

вы можете переписать выражение для простоты понимания.

$a = 5; 
$c = $a--; // $c = 5, $a = 4 
$c += $a--; //$c = 9, $a = 3 
$c += --$a // $c = 11, $a = 2 ($a drops to two before use) 
$c -= --$a //$c = 10 $a = 1 ($a drops to one before use); 
Смежные вопросы