Elaine's Blog 朝著 senior 前進的工程師

PHP 基本語法筆記

2017-07-31
PHP

  • 副檔名 .php
  • 程式碼寫在 <?php ?>
  • 以分號 ; 為結尾

宣告

  • 利用 define 宣告常數

    <?php
    define("GREETING", "Welcome!");
    echo GREETING; // 輸出 Welcome!
    ?>
    
  • 變數不需要宣告

    • $ 作為開頭
    • _a-zA-Z 開頭 (不可以數字開頭)
    • PHP 是弱型別語言
    <?php
    $name = "Elaine";
    ?>
    

輸出

  • echo 能夠輸出一个以上的字符串

    <?php
    echo "hello world";
    ?>
    
    <?= "hello world"?>
    
  • print 只能輸出一个字符串,並 return 1

    <?php
    print "hello world";
    ?>
    
  • echoprint 稍快,因為它不用 return

資料型別

  • 整數 integer
  • 浮點數 float
  • 布林值 boolean
  • 字串 string
  • 陣列 array

    <?php
    $array1 = array(1, 2, 3, 4, 5);    // 5.3 以前的陣列寫法
    $array1 = [
        ['id' => 1, 'name' => 'Elaine'],
        ['id' => 2, 'name' => 'Tom'],
    ];    // 5.4 以後的陣列寫法
    ?>
    
  • 物件 object

    <?php
    class Person {
      function sayHi() {
        echo "hi";
      }
    }
    $person = new Person;
    $person->sayHi();
    ?>
    
  • 資源 resource

    • r 只讀,從檔案的開頭開始
    • r+ 讀/寫,從檔案的開頭開始
    • w 只寫,打開並清空檔案內容,若檔案不存在,則建立新檔案
    • w+ 讀/寫,打開並清空檔案內容,若檔案不存在,則建立新檔案
    • a 追加,打開並向檔案尾端寫入,若檔案不存在,則建立新檔案
    • a+ 讀/追加,打開並向檔案尾端寫入,若檔案不存在,則建立新檔案
    • x 只寫,建立新檔案,若檔案已存在,會返回 false,並噴錯
    • x+ 讀/寫,建立新檔案,若檔案已存在,會返回 false,並噴錯
    <?php
    $file = fopen("welcome.txt", "r");
    ?>
    

強制轉型

<?php
$str = "0";    // 字串
$num = (int)$str;    // 強制轉型為整數
?>

字串運算子

  • . 是字串運算子,可以將句號兩邊的字串結合起來
<?php
$a = "我想學會";
$b = "PHP!";
$a = $a.$b;  // $a 與 $b 的內容被結合後存入了變數 $a 的容器裡面
?>

算數運算子

  • + 加法
  • - 減法
  • * 乘法
  • / 除法
  • % 取餘數
  • intdiv 取商 (PHP7 新運算方法)
<?php
$a = 10;
echo $a + 1;  // 11
?>
<?php
intdiv(10, 3); // 3
?>

比較運算子

  • == 等於
  • != <> 不等於
  • > 大於
  • < 小於
  • >= 大於等於
  • <= 小於等於
  • === 全等,不只值要相等,資料型態也要相等

邏輯運算子

  • and&&
  • or||
  • xor 僅一
  • ! 不是

控制結構

  • if…
  • if…else…
  • if…elseif…else…
  • switch
  • ?: 三元運算

    • 條件? 成立的回傳值 : 不成立的回傳值
    <?php
    $nickname = $_GET["nickname"];  // 取得網址列傳來的變數 nickname
    echo $nickname == "" ? "Guest" : $nickname;  // 若 $nickname 為空字串,則回傳 Guest,否則回傳 $nickname
    ?>
    

從網址列輸入變數

$_GET["變數名稱"] 來取得網址列傳來的變數

<?php
    $h = $_GET["h"];  // 取得網址列傳來的 h
    $w = $_GET["w"];  // 取得網址列傳來的 w

    if ($h == "") {
      $h = 1.72;
    }

    if ($w == "") {
      $w = 60;
    }

    echo "您的BMI = ".$w / ($h * $h);
?>

例如網址是 http://localhost/myweb/index.php?h=1.8&w=60,則輸出結果為 您的 BMI = 18.518518518519

迴圈

  • while
  • do…while
  • for

    • break
      • break 是為迴圈中的指令,在迴圈執行的過程中,如果遇到 break 會跳出迴圈
    • continue
      • 在迴圈中遇到 continue 時,程式運算會直接跳到條件判斷處繼續執行
  • foreach
    • foreach(陣列名稱 as $value) statement
    • foreach(陣列名稱 as $key => $value) statement
<?php
$arr = array("1" => "111", "2" => "222", "3" => "333");
foreach($arr as $key => $value) {
	echo $key." => ".$value."<br/>";
}
?>

輸出結果為

1 => 111
2 => 222
3 => 333

陣列

  • 陣列分為一般陣列,與關聯陣列 (有鍵的)
<?php
$student[1] = "陳奕迅";
$student[2] = "周杰倫";
$student[3] = "林俊傑";
?>
<?php
$student = array(
	1 => "陳奕迅",
	2 => "周杰倫",
	3 => "林俊傑"
);
?>

當陣列成員沒有指定鍵時,預設的鍵順序是 0,1,2,3…,所以也可以寫成:

<?php
$student=array(
	"",  // 陣列的第一筆資料預設的鍵是 0,但因為沒有人,所以保留空
	"陳奕迅",  // 這裡才是 1 號
	"周杰倫",
	"林俊傑"
);
?>

排序陣列

  • sort 對陣列進行升序排列
  • rsort 對陣列進行降序排列
  • asort 對關聯陣列的值進行升序排列
  • arsort 對關聯陣列的值進行降序排列
  • ksort 對關聯陣列的鍵進行升序排列
  • krsort 對關聯陣列的鍵進行降序排列
<?php
$cars = array("Volvo", "BMW", "Toyota");
sort($cars);
print_r($cars);
?>

輸出為

Array ( [0] => BMW [1] => Toyota [2] => Volvo )

自訂函數

function 自訂函數的名稱(參數) {
	//程式
}
  • 先宣告後宣告都可以
  • 參數可以設預設值
function 自訂函數的名稱(參數=預設值){
	//程式
}

參考資料


上一篇 CSS Flexbox

Content