萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> php中++i 與 i++ 的區別比較

php中++i 與 i++ 的區別比較

++i 與 i++ 在很多編程中都有,對變量的增加+1操作,但是有先後問題,下面我來介紹一下他們在運行是的一些區別。


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 賦給新變量。

性能優化

 

 代碼如下 復制代碼 方式一:
 
$begin = time();
$i = 0;
while(++$i < 10000)
{
  $j = 0;
  while(++$j < 10000)
    ;
  ;
}
$end = time();
 
時間 : 16s
 
方式二:
 
$begin = time();
$i = 0;
while($i < 10000)
{
  $j = 0;
  while($j < 10000)
    ++$j;
  ++$i;
}
$end = time();
 
時間:13s
 
方式三:
 
$begin = time();
$i = 0;
while($i < 10000)
{
  $j = 0;
  while($j < 10000)
    $j++;
  $i++;
}
$end = time();
 
時間:15s
 
方式四:
 
$begin = time();
$i = 0;
while($i++ < 10000)
{
  $j = 0;
  while($j++ < 10000)
    ;
  ;
}
$end = time();
時間:13s

對比第一種方法和第二種方法, 因為在PHP中, 最終被執行的是OPCODE, 每行opline

都有倆個操作數, 對於操作數來說, 一般有3種類型的存取方式, 臨時變量, 變量, 和編譯時變量, 這三種變量

其中, 存取最快的是第三種, 編譯器變量, 在OpCode執行過程中, 會講一個變量的加一級引用存儲在一個hash

結構中, 用來加快存取速度.

copyright © 萬盛學電腦網 all rights reserved