iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 2
12
Modern Web

寫給朋友的 PHP 從 0 到 100 實戰教程系列 第 2

Day 2. PHP教學: 把資料記到變數盒子

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
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
7
pingu
iT邦新手 5 級 ‧ 2018-02-27 15:18:03

$damage = 120

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


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

挖~釣到妙蛙本人了XD

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

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

paul60209 iT邦新手 5 級 ‧ 2019-04-18 11:38:55 檢舉

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

  1. PHP的變數有區分型態嗎?
  2. PHP的變數的存活範圍(有分全域跟區域變數)嗎?
  3. 那如果要宣告一個常數的話...?
falconwei iT邦新手 5 級 ‧ 2019-04-22 11:33:38 檢舉

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

const APP_KEY = "12345";
// 變數名稱建議用大寫來區分他是常數,呼叫直接用英文,不用$
echo APP_KEY;
1
uhhhohhh
iT邦新手 5 級 ‧ 2019-06-17 02:05:54

完全新手提問

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

第一行若增加$pokemon = "妙蛙種子";
這樣是不是也要把底下的一千個妙蛙種子改成$pokemon呢?

謝謝/images/emoticon/emoticon13.gif

微笑 iT邦新手 1 級 ‧ 2020-12-28 13:43:14 檢舉

是的,一開始就要套變數做使用
這部份可以善用 ctrl + h 來取代

0
sccool
iT邦新手 5 級 ‧ 2021-03-23 03:17:13

120 因為先乘除後加減

Hankho99 iT邦新手 5 級 ‧ 2023-08-10 16:26:32 檢舉

0

第二篇簽到!
//1110216(三)1741_By Zi

0
Can
iT邦新手 5 級 ‧ 2022-03-16 05:20:50

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

換成我們看得懂的語言就變成
damage=100+10*2
=100+20
=120

我要留言

立即登入留言