成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

你可能不知道的PHP加減法

JessYanCoding / 2949人閱讀

摘要:起因是這樣的,我們都知道語法里有自增操作,即,那么下面我列出一個表達(dá)式好的,為什么等于只有一種解釋,就是自增的優(yōu)先級高于加減,所以二號位自增導(dǎo)致了一號位也變成。但是,它們的值都是。

這可能算不上是一次正規(guī)的解說,畢竟有點燒腦。

起因

是這樣的,我們都知道php語法里有自增操作,即 ++,那么下面我列出一個表達(dá)式

$a = 1;
$result = $a  +  $a++; // $result === 3

好的,為什么等于3?只有一種解釋,就是自增的優(yōu)先級高于加減,所以二號位自增導(dǎo)致了一號位也變成2。(3 = 2 + 1)

既然一號位變成了2,為何二號位不會變成2呢?因為后置自增的返回值僅是臨時變量,這點和 C/C++是一致的,畢竟PHP也是基于C實現(xiàn)的。


換個寫法

$a = 1;
$result = $a  +  ++$a; // $result === 4

似乎驗證了剛才的解釋。由于是前置自增,所以二號位自己的值也變成了2。(4 = 2 + 2)

惡化

接下來,我們把數(shù)量增加到3個

$a = 1;
$result = $a  +  ++$a  +  ++$a;  // $result === 7

為什么是7?按照思路,應(yīng)該是 9 = 3 + 3 + 3,也是醉了,并沒有按照常理出牌。


增加到4個呢

$a = 1;
$result = $a  +  ++$a  +  ++$a + ++$a;  // $result === 11

答案也不是 16 = 4 + 4 + 4 + 4,好吧,和我想的不一樣。

猜測

既然2個$a相加可以正確推算,而3個開始就出錯,為何?于是有了一個猜測,PHP是這樣相加的

$a = 1;
$result = ( ( $a  +  ++$a )   +  ++$a )  +  ++$a; // $result === 11

優(yōu)先級順序 () > ++ > +,11 = ( ( 2 + 2 ) + 3 ) + 4,每跳出一層,$a都自增了1。
有括號和沒有括號的運算,最終運算結(jié)果都是11,我有點確信隱形括號這個事實。

隱形括號

于是我只讓最后一個$a是自增的

$a = 1;
$result_a = $a  +  $a   +  $a   +  ++$a;  // $result_a === 5

$a = 1;
$result_b = ( ( $a  +  $a)  +  $a )  +  ++$a;  // $result_b === 5

好的,$result_a 和 $result_b 的值是一樣的。5 = ( ( 1 + 1 ) + 1 ) + 2


我們此時加入后置自增,看看結(jié)果會不會一樣

$a = 1;
$result_a = $a  +  $a   +  $a++   +  ++$a;  // $result_a === 6

$a = 1;
$result_b = ( ( $a  +  $a)  +  $a++ )  +  ++$a;  // $result_b === 6

是的,遵循了隱形括號的規(guī)則, 6 = ( ( 1 + 1) + 1 ) + 3。

詭異的1

為了給隱形括號做個最終的定論,我們再看一個燒腦例子

$a = 1;
$result_a =       $a  +  ++$a  +  ++$a; // $result_a === 7

$a = 1;
$result_b = 1  +  $a  +  ++$a  +  ++$a; // $result_b === 7

不不不,你沒有看錯,$result_b的前面真的多了一個1。但是,它們的值都是7。你知道為什么嗎?

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/28775.html

相關(guān)文章

  • PHP處理數(shù)學(xué)精度

    摘要:后來我看了下,確實有這么一個擴展庫,處理任意精度數(shù)字,對于任意精度的數(shù)學(xué),提供了支持用字符串表示的任意大小和精度的數(shù)字的二進制計算。 用編程語言做計算,很多時候浮點數(shù)精度都是困擾過我的問題,即便是剛學(xué)PHP的新手也會在群里問為什么我的計算結(jié)果明顯不對,而我們總是老態(tài)龍鐘的丟出一句浮點數(shù)計算都存在精度問題,并沒有提出過什么實質(zhì)性的改善。比如下面的計算 0.57*100: zhgxun-p...

    chaos_G 評論0 收藏0
  • 關(guān)于PHP在企業(yè)中處理數(shù)字加減乘除和對比運算方案

    摘要:如果在中對數(shù)字或者字符串加減乘除處理不當(dāng)?shù)脑挄?dǎo)致結(jié)果不夠嚴(yán)謹(jǐn),通常的假如你需要處理加減乘除應(yīng)該會是這樣比如出現(xiàn)問題等于比如出現(xiàn)問題等于但假如兩個類型不一致或者有精確度缺失就會導(dǎo)致一些問題的存在我們可以使用自帶的函數(shù)來做加減運算處理設(shè) 如果在PHP中對數(shù)字或者字符串加減乘除處理不當(dāng)?shù)脑?、會?dǎo)致結(jié)果不夠嚴(yán)謹(jǐn),通常的、假如你需要處理加減乘除應(yīng)該會是這樣: $a = 1;$b = 2; $a...

    crossoverJie 評論0 收藏0
  • 設(shè)計模式學(xué)習(xí)筆記:工廠模式

    摘要:二簡單工廠模式組成工廠類工廠模式的核心,通過調(diào)用它來實現(xiàn)其他類的功能。三工廠方法模式利用工廠方法模式可以有效解決簡單工廠模式破壞開閉原則的問題。 一、概念 1、工廠模式分為三類:(1)簡單工廠模式:一個工廠創(chuàng)建所有產(chǎn)品(2)工廠方法模式:一個工廠方法創(chuàng)建一個產(chǎn)品(3)抽象工廠模式:一個工廠方法創(chuàng)建一類產(chǎn)品 2、創(chuàng)建型模式這種模式是指將實例的創(chuàng)建和使用分離開來,隱藏類實例的創(chuàng)建細(xì)節(jié),外界...

    luxixing 評論0 收藏0
  • PHP 日期加減計算方法示例

    摘要:標(biāo)準(zhǔn)的日期格式簡單的日期加減計算默認(rèn)時區(qū)今天今天昨天明天一周后一周零兩天四小時兩秒后下個星期四上個周一一個月前一個月后十年后運行結(jié)果今天今天昨天明天一周后一周零兩天四小時 PHP 標(biāo)準(zhǔn)的日期格式 date(Y-m-d H:i:s); PHP 簡單的日期加減計算 運行結(jié)果: 今天:2017-11-06 今天:2008-06-18 昨天:2017-11-05 明天:2017-11-07 ...

    notebin 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<