本文目錄一覽:
- 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 賦給新變量。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/197273.html