本文目录一览:
- 1、请教 关于PHP,这里的的$i中的i不是单独的变量吗?为什么还要在switch和echo里加上$符号呢?
- 2、PHP用global定义变量,变量是只对当前用户有效呢,还是对所有用户有效
- 3、PHP变量加1的几种方式对比
- 4、php中++i 与 i++ 的区别
请教 关于PHP,这里的的$i中的i不是单独的变量吗?为什么还要在switch和echo里加上$符号呢?
PHP是弱语言类型的,声明变量不用声明变量类型。
例如:
$a = 1;
$a (注意是一个整体,而不是你说的$ a),因为1是正形,所以声明了一个整型变量。
$a = '1';
因为'1'是一个字符串(字符串的声明就是用双引号或单引号或定界符声明),所以$a是一个字符串型。
所以在PHP中声明变量是直接声明而不用声明其类型,到底是属于哪种类型的变量,就要看声明的值是属于哪种来判断。
$不是用来声明的 ($+变量名)才表示一个变量;
PHP中 ($+变量名) = 值 ,声明变量。
PHP用global定义变量,变量是只对当前用户有效呢,还是对所有用户有效
$i = 0;
function a(){
global $i;
$i=1;
b();
echo i;
}
function b(){
global $i;
$i++;
return true;
}
$i现在就是全局变量了,在函数里global $i;就能用这个变量了,更改值以后在别的函数里会看到变化。
在这个php执行完成了变量就消失了。所以别的用户执行的这个php里的$i变量和这个没有任何关系。如果想有关系需要保存到文件中或者mysql中
PHP变量加1的几种方式对比
1、$i = $i + 1
?php
$i = 0;
$i = $i + 1;
echo $i;
?
执行过程是,
将$i , 1 执行ADD指令 将结果保存到临时变量中,
将临时变量的值赋给$i;
2、$i++
?php
$i = 0;
$i++;
echo $i;
?
执行过程是,
先将$i 的值保存到临时变量中,然后对$i 执行POST_INC指令。
free掉临时变量
此处之所以需要用到临时变量,是因为在表达式中,是先取i的值,然后对其进行+1操作,所以需要保存i的值,然后对其进行+1操作,所以需要保存i 的原始值
3、$i += 1
?php
$i = 0;
$i += 1;
echo $i;
?
执行过程如下,仅需一条指令
对变量$i 与const 值1 执行ASSIGN_ADD 操作
4、++$i
?php
$i = 0;
++$i;
echo $i;
?
执行过程如下,仅需一条指令
对变量$i 执行PRE_INC操作
对于以上4中操作各执行1千万次,实验结果:
$i++最慢, ++$i最快, 剩余两项速度基本一致速度介于两个自增之间
php中++i 与 i++ 的区别
1、++i 的用法(以 a=++i ,i=2 为例)
先将 i 值加 1 (也就是 i=i+1 ),然后赋给变量 a (也就是 a=i ),
则最终 a 值等于 3 , i 值等于 3 。
所以 a=++i 相当于 i=i+1 ,a=i
2、i++ 的用法(以 a=i++ ,i=2 为例)
先将 i 值赋给变量 a (也就是 a=i ),然后 i 值加 1 (也就是 i=i+1 ),
则最终 a 值等于 2 ,i 值等于 3 。
所以 a=i++ 相当于 a=i , i=i+1
3、++i 与 i++
a=++i 相当于 i++ , a=i
a=i++ 相当于 a=i , i++
4、++i 与 i++ 单独使用时,相当于 i=i+1
如果赋给一个新变量,则 ++i 先将 i 值加 1 ,而 i++ 先将 i 赋给新变量。