iT邦幫忙

0

請問一下運算符問題?

php

網路上有看到 $a++ 和 ++$a 兩種狀況 , 那這兩種有差嗎?? 還有通常都用在哪?
網路上查好多種說法 ~~ 還是搞不太懂 !?

感謝!

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
6
wiseguy
iT邦超人 1 級 ‧ 2015-01-10 23:24:05
最佳解答

++$a 與 $a++ 的差別,在於:變數 $a 加 1 的動作,是在整句程式敘述執行之前做,還是之後做。
例如最簡單的 echo $a++; 等於 echo $a; $a = $a + 1;
echo ++$a; 等於 $a = $a + 1; echo $a; 如此而已。

if($c==8) 裡的($c==8) ,裡面的等於加一個和兩個有差嗎?
單個=是賦值,雙個==(或三個===)是邏輯比較,當然有差。
if ($c = $d) 的意思是:把 $d 的值給 $c,並檢查 $c 的值是 true 還是 false。
if ($c == $d) 的意思是:比較 $c 與 $d 在轉成相同型態後的值,是否相等。
if ($c === $d) 的意思是:比較 $c 與 $d 是否型態一樣,值也一樣。

看更多先前的回應...收起先前的回應...
wiseguy iT邦超人 1 級 ‧ 2015-01-10 23:25:52 檢舉

假如整句程式敘述就只有 $a++; 或是 ++$a; 那就完全一樣。因為沒其它敘述了。

wiseguy iT邦超人 1 級 ‧ 2015-01-10 23:28:18 檢舉

再補充一個寫程式的重要觀念:永遠不要去用你不懂的程式特別語法。那不會顯得寫程式比較厲害,還會讓你下班時間後加班 debug 到抓狂。

wiseguy iT邦超人 1 級 ‧ 2015-01-10 23:43:57 檢舉

依我 15 年 php 的經驗衷心的建議,除非你非常能掌握變數內容,要不然在 php 中的變數邏輯比較,請儘量用三個 ===,而不要用兩個 ==。
請參考:PHP特性引發安全隱患

okra iT邦研究生 3 級 ‧ 2015-01-11 01:11:49 檢舉

wiseguy提到:
依我 15 年 php 的經驗

wiseguy大大是真人不露像讚
沒有出書就可惜了...
去年有讀存儲器大師Mostafa Khalil的經典書,存儲器的眉眉角角写得深入浅出:
http://www.tenlong.com.tw/items/7111438663?item_id=886344
Khalil原是埃及開羅执业药剂师,自学电脑网络技术,10多年成為存儲器方面的專家...

4
weiclin
iT邦高手 4 級 ‧ 2015-01-10 12:27:15

++$a, 先把 $a + 1, 然後取值
$a++, 先取值, 然後把$a + 1
你可以這樣測試:

<pre class="c" name="code">
$a = 1;
echo ++$a, "<br>";
echo $a, "<br>";

$a = 1;
echo $a++, "<br>";
echo $a, "<br>";

你應該會看到:

<pre class="c" name="code">
2
2
1
2

等於的部份, 一個等於是用來把值存進變數, 兩個等於用來比較兩邊是否相等
所以通常在 if 的判斷式裡面, 不會出現一個等於:

<pre class="c" name="code">
if ($a = $b) ....

有些編輯器會對上面這樣的程式顯示警告
其實這樣寫也是正確的語法, 但新手剛學習的話, 你還是把它當成錯誤示範就好

weiclin iT邦高手 4 級 ‧ 2015-01-10 12:31:17 檢舉

如果你只是要把 $a + 1
那寫 $a++ 還是 ++$a 都無所謂
就當是 $a = $a + 1 的簡寫

2
gituest
iT邦新手 5 級 ‧ 2015-01-10 22:13:48

a++ 跟 ++a 就差在 a=a+1
的第一個起數的差別..
後面都是一樣,都是加一的增加下去.

如此, a=0,a++ 就是 a會是 0 1 2 3...
a=0,++a 就是 a 會是 1 2 3 ....
所以 a=1,a++ 就會跟 a=0,++a 一樣..

php 的 = 有分三種 = == ===
1個等於 ,多是用在 變數定意上 $ =
2個等於 , 多用在判段句上 if ( == )
3個等於 ,是絕對等於 ,我也還沒研究過...

wiseguy iT邦超人 1 級 ‧ 2015-01-10 23:13:44 檢舉

gituest提到:
3個等於 ,是絕對等於 ,我也還沒研究過...

值相同,且型別相同。
自己比較一下 if (1 == "1") 跟 if (1 === "1") 的差別。

我要發表回答

立即登入回答