$i++和++$i问题

<?php
$i = 1;
echo $i++; // 1 说明:先输出$i,再将$i自加1
echo $i;   // 2


$i = 1;
echo ++$i; // 2 说明:先将$i自加1,再输出$i
echo $i;   // 2


$i = 1;
echo $i++ + $i++; // 3 = 1 + 2
echo $i;          // 3


$i = 1;
echo $i++ + ++$i; // 4 = 1 + 3
echo $i;          // 3


$i = 1;
echo ++$i + $i++; // 4 = 2 + 2
echo $i;          // 3


$i = 1;
echo ++$i + ++$i; // 5 = 2 + 3
echo $i;          // 3


$i = 1;
echo $i++ + $i++ + $i++; // 6 = 1 + 2 + 3
echo $i;                 // 4


$i = 1;
echo ++$i + ++$i + ++$i; // 9 = 2 + 3 + 4
echo $i;                 // 4

这类代码没有可读性,实际开发中也没有人会这么写,只会出现在面试题中。

遇到$i++和++$i的题,无论式子有多长,只要记住$i++是后自加(先引用其值再自加1),++$i是前自加(先自加1再引用其值),再从左往右慢慢算就能算出来,如下面的题目:

$i = 1;
$j = ++$i + $i++ + $i++ + ++$i;
echo $j; // 求{$j}的值

运算过程解析:

第1个自加“++$i”为前自加,即$i先自加1($i=2),再引用其值,即该自加表达式最终值为【2】;
第2个自加“$i++”为后自加,先引用其值($i=2),即该自加表达式最终值为【2】,然后$i再自加1($i=3);
第3个自加“$i++”为后自加,先引用其值($i=3),即该自加表达式最终值为【3】,然后$i再自加1($i=4);
第4个自加“++$i”为前自加,即$i先自加1($i=5),再引用其值,即该自加表达式最终值为【5】。
 
故:$j = 2 + 2 + 3 + 5 = 12

Copyright © 2024 码农人生. All Rights Reserved