• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php的$i++,++$i的疑问

php 搞代码 4年前 (2022-01-25) 24次浏览 已收录 0个评论
文章目录[隐藏]
<code><?php$i=2;switch($i++){    case 2:     echo '输出2<br />';    echo $i;    break;    case 3:     echo '输出3<br />'.$i;    break;    case 1:    echo "输出1<br />";    break;    default:    break;}</code>

下面这两段代码迷惑:

<code><?phpfor($i=0;$i<3;++$i){    $j=$i;    echo $j.'-'.$i.'<br />';}for($i=0;$i<3;$i++){    $j=$i;    echo $j.'-'.$i.'<br />';}</code>

这里的i++和++i没有区别,不理解?

<code><?php$a=1;echo $a+$a++.'<br />';$a=1;echo $a+$a+$a++;</code>

这里的输出值为什么都是3?

回复内容:

<code><?php$i=2;switch($i++){    case 2:     echo '输出2<br />';    echo $i;    break;    case 3:     echo '输出3<br />'.$i;    break;    case 1:    echo "输出1<br />";    break;    default:    break;}</code>

下面这两段代码迷惑:

<code><?phpfor($i=0;$i<3;++$i){    $j=$i;    echo $j.'-'.$i.'<br />';}for($i=0;$i<3;$i++){    $j=$i;    echo $j.'-'.$i.'<br />';}</code>

这里的i++和++i没有区别,不理解?

<code><?php$a=1;echo $a+$a++.'<br />';$a=1;echo $a+$a+$a++;</code>

这里的输出值为什么都是3?

<?php
$a=1;
echo $a+$a++.’
‘;
$a=1;
e*本5文来源gaodai$ma#com搞$$代**码)网@搞代码gaodaimacho $a+$a+$a++;

第一个echo的执行顺序如下图:

$a = 1;
$a++ 返回1保存到临时变量 ~1
这个时候!0(也就是$a已经自增变为2)了
~1+!0 (1+2) 保存到临时变量 ~2
输出3

第二个echo的执行顺序如下图:

如图所示
执行顺序是
$a = 1;
$a+$a 的结果2保存到临时变量 ~1
$a++ 返回1, 保存到临时变量 ~2
~1+~2(1+2) 保存到临时变量 ~3
输出3

对于for语句来说,你那样写结果是一样的,实际i++与++i二者的使用执行还是有区别的.如下:
比如:

<code>$n = 1;echo $n++;        // 1        先使用echo $n;          // 2        后执行++echo '<hr>';$n = 5;echo ++$n;        // 6        先执行++ ,后使用$n的值echo $n;          // 6</code>

所以

<code>$a=1;echo $a+$a++.'<br />';   // 2 + 1$a=1;echo $a+$a+$a++;        // (1+1)+1        </code>

简而言之,运算符优先级相同,其结合方向决定求值顺序
通常而言++优先级高,所以$a+$a++ 是先使用后者$a值,又因为是同一变量,本着从左到右结合,在使用第一个$a时值变成了2,所以结果2+1 得3
但无论是i++,还是++i(只能改变局部结合顺序),都是加法运算(优先级相同),显然加运算整体从左到右,($a+$a)+$a++,后者$a++ 不影响,后者表达式前2个$a的值.

因为第一段代码输出的是 $i。

第二段代码输出的是 $a+$a+($a++)

其实就是$a++ 和 ++$a 的区别。要实际输出他们的时候才会有区别,否则没有任何区别。

例如:
$a=1,$b=1;
$a++;
++$b;
echo ‘这是$a++后的结果: ‘.$a; // 2
echo ‘这是++$b后的结果:’.$b; // 2

由于输出的是经过++(自增)后的结果,所以是一样的。

若是直接输出那就不一样了:

$a=1,$b=1;
echo ‘这是$a++: ‘.$a++; // 1
echo ‘这是++$b:’.++$b; // 2

由于是直接输出的,所以会不同。原因是:
$a++ 先返回$a的值,然后自增。

++$b是直接返回自增后的值

建议参看 http://php.net/manual/zh/control-structures.for.php
无论是 i++ 或者 ++i 都是在本次循环结束后再运算,再进入下一次循环


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php的$i++,++$i的疑问

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址