《簡明 PHP 教程》04 基礎

展小白發表於2018-08-31

只是列印出 hello world 肯定是不夠的,是嗎?你會希望做得比這還要多——你想要輸入一些內容,操縱它,然後從中得到一些輸出出來的內容。我們可以在 PHP 中通過使用變數與常量來實現這一目標,在本章中我們還會學習其它的一些概念。

PHP 標記

當解析一個檔案時,PHP 會尋找起始和結束標記,也就是 <?php?>,這告訴 PHP 開始和停止解析二者之間的程式碼。此種解析方式使得 PHP 可以被嵌入到各種不同的文件中去,而任何起始和結束標記之外的部分都會被 PHP 解析器忽略。

如果檔案內容是純 PHP 程式碼,最好在檔案末尾刪除 PHP 結束標記。這可以避免在 PHP 結束標記之後萬一意外加入了空格或者換行符,會導致 PHP 開始輸出這些空白,而指令碼中此時並無輸出的意圖。

註釋

PHP 支援 C,C++ 和 Unix Shell 風格(Perl 風格)的註釋。例如:

<?php
    echo "This is a test"; // 這是 C++ 風格的單行註釋
    /* 這是一個
       多行註釋 */
    echo "This is yet another test";
    echo 'One Final Test'; # 這是 shell 風格的單行註釋
複製程式碼

註釋主要用作寫給程式讀者看的筆記。

C 風格的註釋在碰到第一個 */ 時結束。要確保不要巢狀 C 風格的註釋。試圖註釋掉一大塊程式碼時很容易出現該錯誤。

<?php
 /*
    echo "This is a test"; /* 這個註釋將要引起問題 */
 */
複製程式碼

你應該在你的程式中儘可能多地使用有用的註釋:

  • 解釋假設
  • 說明重要的決定
  • 解釋重要的細節
  • 說明你想要解決的問題
  • 說明你想要在程式中克服的問題,等等。

程式碼會告訴你怎麼做,註釋會告訴你為何如此。

這樣做對你的程式的讀者來說非常有用,他們可以很容易地理解你的程式是做什麼的。請記住,這個人可以是六個月後的你!

常量

常量是一個簡單值的識別符號(名字)。如同其名稱所暗示的,在指令碼執行期間該值不能改變。常量預設為大小寫敏感。傳統上常量識別符號總是大寫的。

常量名和其它任何 PHP 標籤遵循同樣的命名規則。合法的常量名以字母或下劃線開始,後面跟著任何字母,數字或下劃線。

<?php

// 合法的常量名
define("FOO",     "something");
define("FOO2",    "something else");
define("FOO_BAR", "something more");

// 非法的常量名
define("2FOO",    "something");

// 下面的定義是合法的,但應該避免這樣做:(自定義常量不要以__開頭)
// 也許將來有一天PHP會定義一個__FOO__的魔術常量
// 這樣就會與你的程式碼相沖突
define("__FOO__", "something");
複製程式碼

常量的範圍是全域性的。不用管作用區域就可以在指令碼的任何地方訪問常量。

變數

PHP 中的變數用一個美元符號後面跟變數名來表示。變數名是區分大小寫的。

變數名與 PHP 中其它的標籤一樣遵循相同的規則。一個有效的變數名由字母或者下劃線開頭,後面跟上任意數量的字母,數字,或者下劃線。

<?php
$var = 'Bob';
$Var = 'Joe';
echo "$var, $Var";      // 輸出 "Bob, Joe"

$4site = 'not yet';     // 非法變數名;以數字開頭
$_4site = 'not yet';    // 合法變數名;以下劃線開頭
$i站點is = 'mansikka';  // 合法變數名;可以用中文
複製程式碼

變數預設總是傳值賦值。那也就是說,當將一個表示式的值賦予一個變數時,整個原始表示式的值被賦值到目標變數。

PHP 也提供了另外一種方式給變數賦值:引用賦值。這意味著新的變數簡單的引用(換言之,“成為其別名” 或者 “指向”)了原始變數。改動新的變數將影響到原始變數,反之亦然。

使用引用賦值,簡單地將一個 & 符號加到將要賦值的變數前(源變數)。例如,下列程式碼片斷將輸出“My name is Bob”兩次:

<?php
$foo = 'Bob';              // 將 'Bob' 賦給 $foo
$bar = &$foo;              // 通過 $bar 引用 $foo
$bar = "My name is $bar";  // 修改 $bar 變數
echo $bar;
echo $foo;                 // $foo 的值也被修改
複製程式碼

有一點重要事項必須指出,那就是隻有有名字的變數才可以引用賦值。

型別

PHP 支援 9 種原始資料型別。

四種標量型別:

  • boolean(布林型)
  • integer(整型)
  • float(浮點型,也稱作 double)
  • string(字串)

三種複合型別:

  • array(陣列)
  • object(物件)
  • callable(可呼叫)

兩種特殊型別:

  • resource(資源)
  • NULL(無型別)

Boolean 布林型別

這是最簡單的型別。boolean 表達了真值,可以為 TRUE 或 FALSE。

要指定一個布林值,使用常量 TRUE 或 FALSE。兩個都不區分大小寫。

<?php
$foo = True; // 設定 $foo 為 TRUE
複製程式碼

Integer 整型

integer 是集合 ℤ = {..., -2, -1, 0, 1, 2, ...} 中的某個數。

整型值可以使用十進位制,十六進位制,八進位制或二進位制表示,前面可以加上可選的符號(- 或者 +)。

<?php
$a = 1234; // 十進位制數
$a = -123; // 負數
$a = 0123; // 八進位制數 (等於十進位制 83)
$a = 0x1A; // 十六進位制數 (等於十進位制 26)
$a = 0b11111111; // 二進位制數字 (等於十進位制 255)
複製程式碼

Float 浮點型

浮點型(也叫浮點數 float,雙精度數 double 或實數 real)可以用以下任一語法定義:

<?php
$a = 1.234; 
$b = 1.2e3; 
$c = 7E-10;
複製程式碼

String 字串

一個字串 string 就是由一系列的字元組成,其中每個字元等同於一個位元組。

單引號

定義一個字串的最簡單的方法是用單引號把它包圍起來(字元 ')。

<?php
echo 'this is a simple string';
複製程式碼

雙引號

如果字串是包圍在雙引號(")中, PHP 將對一些特殊的字元進行解析,如 \n 換行,\t 水平製表符等。另外最重要的特徵是變數會被解析。

Heredoc 結構

第三種表達字串的方法是用 heredoc 句法結構:<<<

<?php
$str = <<<EOD
Example of string
spanning multiple lines
using heredoc syntax.
EOD;
複製程式碼

Array 陣列

PHP 中的陣列實際上是一個有序對映。對映是一種把 values 關聯到 keys 的型別。此型別在很多方面做了優化,因此可以把它當成真正的陣列,或列表(向量),雜湊表(是對映的一種實現),字典,集合,棧,佇列以及更多可能性。

<?php
$array = array(
    "foo" => "bar",
    "bar" => "foo",
);

// 自 PHP 5.4 起
$array = [
    "foo" => "bar",
    "bar" => "foo",
];
複製程式碼

key 可以是 integer 或者 string。value 可以是任意型別。可以不指定鍵名,或者對某些單元指定鍵名。

陣列單元可以通過 array[key] 語法來訪問。

<?php
$array = array(
    "foo" => "bar",
    42    => 24,
    "multi" => array(
         "dimensional" => array(
             "array" => "foo"
         )
    )
);

var_dump($array["foo"]);
var_dump($array[42]);
var_dump($array["multi"]["dimensional"]["array"]);
複製程式碼

Object 物件

要建立一個新的物件 object,使用 new 語句例項化一個類:

<?php
class foo
{
    function do_foo()
    {
        echo "Doing foo."; 
    }
}

$bar = new foo;
$bar->do_foo();
複製程式碼

接下來我們將看見如何使用變數與常量。你需要儲存以下案例並嘗試執行程式。

如何編寫 PHP 程式

從今以後,儲存和執行 PHP 程式的標準步驟如下:

對於 PhpStorm 使用者

  1. 開啟 PhpStorm。
  2. 以給定的檔名建立新檔案。
  3. 輸入案例中給出的程式碼。
  4. 右鍵並執行當前檔案。

對於其他編輯器使用者

  1. 開啟你選擇的編輯器。
  2. 輸入案例中給出的程式碼。
  3. 以給定的檔名將其儲存成檔案。
  4. 在直譯器中通過命令 php program.php 來執行程式。

案例:使用變數與常量

輸入並執行以下程式:

<?php
# 檔名:var.py
$i = 5;
echo $i . "\n";
$i = $i + 1;
print $i . "\n";

$s = <<<EOT
This is a multi-line string.
This is the second line.
EOT;
print $s;
複製程式碼

輸出:

5
6
This is a multi-line string.
This is the second line.
複製程式碼

它是如何工作的

下面是這一程式的工作原理。首先,我們使用賦值運算子(=)將常量數值 5 賦值給變數 $i。這一行被稱之為宣告語句(Statement)因為其工作正是宣告一些在這一情況下應當完成的事情:我們將變數名 $i 與值 5 相連線。然後,我們通過 echo 語句來列印變數 $i 所宣告的內容,這並不奇怪,只是將變數的值列印到螢幕上。這裡我們同時列印了 \n 是為了換行。

接著,我們將 1 加到 $i 變數所儲存的值中,並將得出的結果重新儲存進這一變數。然後我們將這一變數列印出來,並期望得到的值應為 6

類似地,我們將文字賦值給變數 $s,並將其列印出來。

針對靜態程式語言程式設計師的提示

變數只需被賦予某一值。不需要宣告或定義資料型別。

邏輯行與物理行

所謂物理行(Physical Line)是你在編寫程式時你所看到的內容。所謂邏輯行(Logical Line)是 PHP 所看到 的單個語句。PHP 以 ; 作為不同邏輯行的結束與分隔。

PHP 鼓勵每一行使用一句獨立語句從而使得程式碼更加可讀。

如果你有一行非常長的程式碼,你可以通過使用反斜槓將其拆分成多個物理行。

$s = 'This is a string. \
This continues the string.';
echo $s;
複製程式碼

輸出:

This is a string. This continues the string.
複製程式碼

縮排

空白區在各行的開頭,這被稱作縮排(Indentation)。在邏輯行的開頭留下空白區(使用空格或製表符)用以確定各邏輯行的縮排級別,而後者又可用於確定語句的分組。

這意味著放置在一起的語句擁有相同的縮排。每一組這樣的語句被稱為塊(block)

如何縮排

使用四個空格來縮排。好的編輯器會自動為你完成這一工作。請確保你在縮排中使用數量一致的空格。

總結

現在我們已經瞭解了諸多本質性的細節,我們可以前去了解控制流語句等更多更加有趣的東西。記得一定要充分理解你在本章所閱讀的內容。

連結:blog.zhanxiaobai.com/2018/08/31/…

相關文章