PHPにおけるプレフィックス形式とポストフィックス形式
インクリメントおよびデクリメント演算は、実際には2通りの方法で記述することができます。ポストフィックス形式では、演算子は変数名の後に記述されます(例:$a++)。一方、プレフィックス形式では、演算子は変数名の前に記述されます(例:++$a)。例を用いて、2つの方法の違いを見てみましょう。
次の例では、最初のechoは0を出力します。なぜなら、まず画面への出力が行われ、その後で変数が増加するからです:
<?php
$num = 0;
echo $num++; // 0を出力します(echoの後で変数が増加するため)
echo $num; // 1を出力します - 変数は変更されました
?>
今度は、変数がまず増加し、その後で画面への出力が行われます:
<?php
$num = 0;
echo ++$num; // 1を出力します - 変数はすぐに増加しました
?>
この振る舞いは、画面への出力だけでなく、代入に対しても有効です:
<?php
$num1 = 0;
$num2 = $num1++; // 変数$num2には0が書き込まれます
echo $num2; // 0を出力します
echo $num1; // 1を出力します - 変数$num1は$num2への書き込み後に変更されました
?>
では、ポストフィックス形式をプレフィックス形式に変更してみましょう:
<?php
$num1 = 0;
$num2 = ++$num1; // 変数$num2には1が書き込まれます
echo $num2; // 1を出力します
?>
演算が独立した行で行われる場合、プレフィックス形式とポストフィックス形式の間に違いはありません:
<?php
$num = 0;
++$num;
$num++;
echo $num; // 2を出力します
?>
コードを実行せずに、画面に何が表示されるか判断してください:
<?php
$num = 3;
echo ++$num;
?>
コードを実行せずに、画面に何が表示されるか判断してください:
<?php
$num = 3;
echo $num++;
?>
コードを実行せずに、画面に何が表示されるか判断してください:
<?php
$num = 3;
echo --$num;
?>
コードを実行せずに、画面に何が表示されるか判断してください:
<?php
$num = 3;
echo $num--;
?>
コードを実行せずに、画面に何が表示されるか判断してください:
<?php
$num1 = 3;
$num2 = ++$num1;
echo $num1;
echo $num2;
?>
コードを実行せずに、画面に何が表示されるか判断してください:
<?php
$num1 = 3;
$num2 = $num1++;
echo $num1;
echo $num2;
?>
コードを実行せずに、画面に何が表示されるか判断してください:
<?php
$num1 = 3;
$num2 = --$num1;
echo $num1;
echo $num2;
?>
コードを実行せずに、画面に何が表示されるか判断してください:
<?php
$num1 = 3;
$num2 = $num1--;
echo $num1;
echo $num2;
?>
コードを実行せずに、画面に何が表示されるか判断してください:
<?php
$num1 = 3;
$num1++;
$num2 = $num1--;
echo $num1++;
echo --$num2;
?>