php基础问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php基础问题相关的知识,希望对你有一定的参考价值。

最近入手一本细说php
正在照书学习 有段基础代码不甚了解 球赐教

<?php
$a=10;
$b=$a++ + ++$a; //前面的$a++是先算表达式即10+1=11,后面++$a是先递增一再计算表达式即11+1=12(新的$a),$b=(新)$a+$a=12+10=22
echo " $a <br>";
echo " $b<br>";
$b=$a-- - --$a;//前面的$a--是先算表达式即12-1=11,后面--$a是先递减一再计算表达式即11-1=10(新的$a),$b=(新)$a-$a=10-12=-2
echo" $a<br>";
echo "$b<br>";

?>

以上的注释是个人的理解 按这样最后的echo“$b<br>"应该输出的是-2啊,例子和实际运行均显示输出的数字是2.这样看来肯定是我的理解有误!求正解

你对前增与后增没有理解清。。。其实应该是这样的:
$b=$a++ 此时b的值还是10. a在把值赋给b后变成了11.
$b=++$a 此时b的值是12(即先加1再赋值) 所以这样就变成了a=12, b=22;

$b=$a-- 此时b的值还是12. a在把值赋给b后变成了11.
$b=--$a 此时b的值是10(即先减1再赋值) 所以这样就变成了a=10, b=2(相当于12-10);追问

这么说问题的关键是当时$b的值
我就是在那里出现理解错误

哦 原来是这样 谢谢

参考技术A $b=($a++) + (++$a)
=>$b=10+12=22
$a=12

$b=($a--) - (--$a);
=>$b=12-10=2
$a=10

$a++ 是先计算, 在自加, ++$a 是先自加, 在计算
参考技术B <?php
$a=10;
$b=$a++ + ++$a; //前面的$a++是10,后面++$a是先递增一再计算表达式即11+1=12(新的$a),$b=(新)$a+$a=12+10=22
echo " $a <br>";
echo " $b<br>";
$b=$a-- - --$a;//前面的$a--是12,后面--$a是先递减一再计算表达式即11-1=10(新的$a),$b=(新)$a-$a=12-10=2
echo" $a<br>";
echo "$b<br>";
// $a++看作一个变量$v,那么变量v的值是这样来的,(后加)先将$a的值赋给$v,然后执行$a=$a+1;++$a(先加),则是先执行$a=$a+1,然后再将新得到的新值$a赋给$v.
?>

以上是关于php基础问题的主要内容,如果未能解决你的问题,请参考以下文章

关于PHP的基础问题

php基础问题

php基础问题,赐教哈

PHP基础常见问题

《PHP基础知识总结》系列分享专栏

php面向对象基础——概念