iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 2
7

Why
為什麼我們用 PHP 要學『變數』啊?
因為我們會需要暫時記住一些資料,用來重複使用或是用來計算,這個暫時儲存的空間稱為變數。
很像是我們數學上的 X 代數,可以代表某個數字或資料。

來舉個例,假設一個情況我們今天要組合一串文字

echo "妙蛙種子 使用 藤鞭";
echo "妙蛙種子 使用 飛葉快刀";
echo "妙蛙種子 使用 寄生種子";

如果今天發生意外,臨時要換另一隻神奇寶貝叫『走路草』來做一樣的事情。
找工讀生來幫忙改,是不是要一行一行找,找到妙蛙種子改走路草:

echo "走路草 使用 藤鞭";
echo "走路草 使用 飛葉快刀";
echo "走路草 使用 寄生種子";

How
如果不幸我們妙蛙種子用了一千次一萬次,那改完可能天亮了。
聰明又懶惰的你一定會想說,有沒有辦法改一次就好。
當然有,寫成這樣就可以了:

$pokemon = "妙蛙種子";
echo $pokemon." 使用 藤鞭";
echo $pokemon." 使用 飛葉快刀";
echo $pokemon." 使用 寄生種子";

What
這段可執行出相同結果的例子,想看懂先來了解幾件事:

  • 錢字號 $ 後方帶英文 組成的 $pokemon 可以當成一個存值用的『變數』把資料裝在裡面,後面的指令上可以重複使用
  • 等號 = 可以把後方 "妙蛙種子" 的字串資料裝到前面的『變數』$pokemon 盒子裡面。
  • 在 PHP 裡面 字串可以用 一個『點』 來連接,舉個例 "出來吧妙蛙種子" 等於 "出來吧"."妙蛙種子" 兩者相同
  • 字串變數也可以被連接,所以 $pokemon." 使用 藤鞭" 等於 "妙蛙種子 使用 藤鞭"。

那麼我們只需要改這行:$pokemon = "妙蛙種子"; 就可以把全部的妙蛙種子改成走路草
改成:

$pokemon = "走路草";
echo $pokemon." 使用 藤鞭";
echo $pokemon." 使用 飛葉快刀";
echo $pokemon." 使用 寄生種子";

就可以瞬間完成一千行的修改,再去喝杯咖啡,悠哉的回報說你超神速解決問題了,變數是不是超實用。

這時候一定有人舉手問說字串可以放到變數裡面,那可以放數字嗎?
我會說老天你怎麼這麼厲害,會舉一反三!

再舉個例子:

$atk = 100;
$damage = $atk + 10 * 2;
echo $damage;

今天的課後問題是最後 echo 印出的 $damage 是多少呢?

想真的執行 PHP 語法的話,可以到這個網址把問題複製上去,就可以看到答案了。
http://sandbox.onlinephpfunctions.com/
疑,你說怎麼不是 220? 班上如果有知道答案的資優生幫我留言回答解釋一下,謝謝 :D


上一篇
Day 1. PHP教學: 寫程式真的不難,從零開始也可以
下一篇
Day 3. PHP教學: 一分鐘搞懂『如果...就...』的 if else 語法
系列文
寫給朋友的 PHP 從 0 到 100 實戰教程30

2 則留言

2
casiolike0531
iT邦新手 5 級 ‧ 2018-02-27 15:18:03

$damage = 120

不是220是因為 先乘除後加減 的關係
若是要220,得寫成


$atk = 100;
$damage = ($atk + 10) * 2;
echo $damage;

挖~釣到妙蛙本人了XD

1
w119w229
iT邦新手 5 級 ‧ 2018-12-13 15:50:52

雖然目前才看到第二篇
但寫的真得很好
淺顯易懂~~覺得很棒^^

首先感謝版主的熱心教學~果真淺顯易懂~大推!
以我完全沒學過PHP的新手看完之後會想請問...

  1. PHP的變數有區分型態嗎?
  2. PHP的變數的存活範圍(有分全域跟區域變數)嗎?
  3. 那如果要宣告一個常數的話...?

PHP的變數有區分型態嗎?
新版本的 PHP 可以有區分也可以不用區分,區分的好處是未來維護簡單
PHP的變數的存活範圍(有分全域跟區域變數)嗎?
有的,在 { } 大括號內宣告的預設都是區域變數
盡量使用區域變數的好處是,不會被其他運作中的 function 意外干擾
那如果要宣告一個常數的話...?
可以用這個語法

const APP_KEY = "12345";
// 變數名稱建議用大寫來區分他是常數,呼叫直接用英文,不用$
echo APP_KEY;

我要留言

立即登入留言