Why
為什麼我們用 PHP 要學邏輯語法呢?
因為生活中總是充滿是非題,例如像是:
『如果』晚點會下雨『就』帶傘,大晴天就不用帶
『如果』考不及格『就』會挨罵
『如果』他敢表白,我『就』答應他
『如果』對方出剪刀,我『就』出石頭
說穿了就是滿足某個條件,就去做某件事。
而我們使用電腦幫我們處理事情時,常常就需要描述這個邏輯。
How
那程式語法要怎麼寫呢?
如果 ( 下雨 ) { 就帶傘 }
用實際的英文語法也一樣
$weather = "rainning";
if($weather == "rainning") { echo "bring an umbrella"; }
What
出現了一些新東西讓我來解釋
如果要做的事情很多,我們習慣這樣寫比較整齊:
if($weather == "rainning") {
echo "bring an umbrella";
echo "wear a raincoat";
echo "wear rain boots";
}
那有如果我要寫不下雨的情況呢?
可以加上 else 稱 否則
if($weather == "rainning") {
echo "bring an umbrella";
echo "wear a raincoat";
echo "wear rain boots";
}else{
echo "yeah~~~~happy";
echo "streaking";
}
這樣解釋是不是就很輕鬆看懂了 if (條件) { 符合要執行的事情 } else { 否則要執行的事情 }
萬事起頭難,大城也是一塊一塊磚堆出來。
這就是你的第一塊磚,保持耐心,我們要進入更有挑戰性的主題了。
今天的課後作業是告訴我為什麼結果是印出 No, it is rainning ?
$weather = "sunny";
if($weather = "raining"){
echo "No, it is ".$weather;
}else{
echo "Yeah, it is ".$weather;
}
想真的執行 PHP 語法的話,可以到這個網址把問題複製上去,就可以看到答案了。
http://sandbox.onlinephpfunctions.com/
我想是因為條件式()裏頭是 = 而不是 ==
= 感覺有指定的意思
== 拿來做邏輯判斷(True & False)
YES 沒錯。如果用等號會失去比對判斷的功能
因為 weather 變數在 if 前已經被指定為 sunny 的內容,而進到 if 語法中的括號條件式時,
sunny 不等於 raining
所以印出 no it is rainning ,不知道我的想法是否正確,煩請指正,謝謝!
是的。
因為$weather 變數己經被置換了內容為"raining",
故 ($weather = "raining") = True
if(True) {echo "No, it is ".$weather;}
所以會列印出 no it is rainning
因為 weather 變數在 if 前已經被指定為 sunny 的內容,而進到 if 語法中的括號條件式時,
sunny 不等於 raining
所以印出 no it is rainning ,不知道我的想法是否正確,煩請指正,謝謝!
因為if中的內容是
$weather = "raining"
不是
$weather == "raining"
if($weather = "raining") 等同將$weather變數變成raining
而附值的行為會給if true的結果,所以執行了No, it is rainning
$weather = "sunny";
if($test = "test" - 10){
echo "No, it is ".$weather."\n";
echo "test: $test";
}else{
echo "Yeah, it is ".$weather."\n";
}
Result:
Warning: A non-numeric value encountered in [...][...] on line 4
No, it is sunny
test: -10
$weather = "sunny";
if($test = "test" * 10){
echo "No, it is ".$weather."\n";
echo "test: $test";
}else{
echo "Yeah, it is ".$weather."\n";
echo "test: $test";
}
Result:
Warning: A non-numeric value encountered in [...][...] on line 4
Yeah, it is sunny
test: 0
從上面兩個例子來看,php自己有一套判斷if()的結果是true或false的標準
($test = "test" - 10)會判斷是true, 而且把"test"當成0-10之後指派給$test
($test = "test" * 10)會判斷是false, 而且把"test"當成0*10之後"指派給$test
測試之後我的判斷是,if()中如果是一個object
php會去判斷這個object的值,如果是0則回報false,如果>0則回報true
ex:
if ($test = 100 + 0) return true
if ($test = 100 * 0) return false
if ($test = "ABC") return true
if ($test = "") return false
if ($test = [1,2,3]) return true
if ($test = []) return false
數字形態看值,字串及array應該是看length,其他東西怎麼判斷可能就要試看看了
想請教的是 .. 我慣用語言是C#,不會也不能這樣寫if()
但在php中是否常有人用這樣的寫法呢?
因為不會報錯,我想所以除錯上可能會遇到一些麻煩?
是因為0代表false,其他數字代表true而已,這在大部份弱型別語言是共通的
其他語言不能跑比較有可能是因為你沒有給$test初始值
$weather = "sunny";
if($weather = "raining"){ <-- 這裡把$weater變成了raining 並沒有比較 (==)
echo "No, it is ".$weather;
}else{
echo "Yeah, it is ".$weather;
}
第三篇簽到!
//1110216(三)1744_By Zi
有看不懂的地方留言 我再改寫一次