讀古今文學網 > 微信公眾平台開發:從零基礎到ThinkPHP5高性能框架實踐 > 2.2.1 PHP語法及使用 >

2.2.1 PHP語法及使用

PHP的語法和C、C++等語言的語法很相似,有C語言基礎的讀者,可以非常輕鬆地掌握PHP的基本語法。由於PHP的語法比較簡單,即使沒有任何開發語言基礎,也可以快速熟悉它。

1.第一個程序

打開編輯器Notepad++,在其中編寫如下內容。


<?php
    // 作者:方倍
    echo "你好,微信!";
?>
  

將上述內容保存為hello.php,並且存放在WAMP的Web根目錄c:\wamp\www\下,然後在瀏覽器中輸入http://localhost/hello.php,可以看到瀏覽器顯示出「你好,微信!」,如圖2-15所示。

圖2-15 第一個程序

下面對這個程序進行講解。

所有PHP代碼都是以「<?php」開頭,以「?>」結尾的,PHP的默認文件擴展名是「.php」。「//」表示該行是註釋,它的作用是供代碼開發者閱讀,不會被程序執行,因此代碼中的「作者:方倍」就沒有在瀏覽器中顯示。echo是PHP的一個語句,它的作用是將一串字符顯示出來,所以在瀏覽器中看到了「你好,微信!」這一段內容。

2.變量及類型

變量是指程序中可以改變的數據量,變量需有一個名字,用來代表變量和存放變量的值。PHP中使用美元符號「$」後跟變量名來表示一個變量,如「$result」。PHP的變量主要有以下類型:整數類型、浮點類型、字符串類型、布爾類型、數組類型、對象。下面是整型、浮點型、字符串類型的示例代碼。


<?php
$x = 100;                           // 整型
$y = 100.33;                        // 浮點型
$hello ="Hello world!";             // 字符串類型
echo $x;
echo "<br>";
echo $y;
echo "<br>";
echo $hello;
?>
  

上述代碼分別定義了一個整數類型變量和一個浮點類型變量和一個字符串類型變量。它在瀏覽器中的運行效果如圖2-16所示。

3.常量

PHP中通過define函數定義常量。合法的常量名只能以字母和下劃線開始,後面可以跟任意字母、數字或下劃線。常量一旦定義就不能再修改或者取消定義。常量定義的示例代碼如下。


<?php
define("TOKEN", "weixin");
echo TOKEN;
?>
  

上述代碼定義名為TOKEN的常量,它的值為weixin,在瀏覽器中的運行效果如圖2-17所示。

圖2-16 變量示例

圖2-17 常量示例

4.運算符

運算符是指通過一個或多個表達式來產生另外一個值的某些符號,如「+」、「%」、「.」等都是運算符。

在PHP中,使用符號「=」表示賦值。它的含義是將一個值指定給一個變量。例如,「$a=5」表示將5賦給$a。

PHP的算術運算符有加(+)、減(-)、乘(*)、除(/)和取模(%)、取反(-,即取負值)。例如,「$x+$y」表示變量$x和變量$y的值相加。

PHP有遞增/遞減運算符。遞增運算符是指對當前表達式的值增加1,遞減運算符正相反,對表達式的值減1。例如,「++$x」表示$x加1遞增,然後返回$x;「$x--」表示先返回$x,然後$x減1遞減。

PHP的字符串運算符只有一個,即字符串的連接運算符「.」。例如,「$x="Hello";$x.="weixin!";」表示變量$x的末尾加上字符串「weixin!」。這時$x的值為「Hello weixin!」。

PHP的邏輯運算符有與(and)、或(or)、異或(xor)、與(&&)、或(||)、非(!)。

PHP的比較運算符有等於(==)、全等(===)、不等於(!=)、不等於(<>)、不全等(!==)、大於(>)、小於(<)、大於或等於(>=)、小於或等於(<=)。

除此之外,還有條件運算符「expr1?expr2:expr3」,它的計算規則是:如果表達式expr1的值為真,那麼整個表達式的值就取expr2的值,否則,就取expr3的值。

下述代碼是常用運算符的示例。


<?php
$x=10; 
$y=6;
echo ($x + $y);        // 輸出 16
echo "<br>";
echo ($x - $y);        // 輸出 4
echo "<br>";
echo ($x * $y);        // 輸出 60
echo "<br>";
echo ($x / $y);        // 輸出 1.6666666666667
echo "<br>";
echo ($x % $y);        // 輸出 4
echo "<br>";
$z=5;
$z *= 6;
echo $z;               // 輸出 30
echo "<br>";
$x="Hello";
$x .= " weixin!";
echo $x;               // 輸出 Hello weixin!
echo "<br>";
$i=5;
echo $i--;             // 輸出 5
echo "<br>";
$a=50;
$b=90;
var_dump($a > $b);

$max = ($a>=$b) ? $a : $b;
echo $max;            // 輸出 90
?>
  

在瀏覽器中的運行效果如圖2-18所示。

圖2-18 運算符示例

5.流程控制

PHP程序由語句構成,通常情況下,程序從第一條語句開始執行,按順序執行到最後一句。但有時因為某些原因,需要改變程序的執行順序,這就需要對程序的流程進行控制。

PHP程序的執行方式有3種:順序執行、選擇執行、循環執行。通過使用這3種控制結構,可以改變程序的執行順序,以滿足解決問題的需求。順序結構使程序從第一條語句開始,按順序執行到最後一句。在選擇結構中,程序可以根據某個條件是否成立,選擇執行不同的語句。在循環結構中,程序可以根據某種條件和指定的次數,使某些語句執行多次。

(1)if語句/if...else語句/if...elseif...else語句

在PHP中,可以使用以下條件語句。

·if語句:如果指定條件為真,則執行代碼。

·if...else語句:如果條件為真,則執行代碼;如果條件為假,則執行另一段代碼。

·if...elseif...else語句:選擇若干代碼塊之一執行。

下述代碼是if語句系列的使用方法。


<?php
$t=date("H");

if ($t<"18") {
    echo "白天!";
}

if ($t<"18") {
    echo "白天!";
} else {
    echo "晚上!";
}

if ($t<"12") {
    echo "上午!";
} elseif ($t<"18") {
    echo "下午!";
} else {
    echo "晚上!";
}
?>
  

上述代碼的含義解讀如下。

在if語句中,如果當前時間(HOUR)小於18,則輸出「白天!」。

在if...else語句中,如果當前時間(HOUR)小於18,則輸出「白天!」,否則輸出「晚上!」。

在if...elseif...else語句中,如果當前時間(HOUR)小於12,則輸出「上午!」;如果大於12且小於18,則輸出「下午!」;否則輸出「晚上!」。

(2)switch語句

switch語句首先計算表達式expr的值,如果expr的值與某個case的值匹配,則從該case後面的語句開始執行,直到遇到break語句或整個switch語句結束。

switch語句的使用示例如下。


<?php
switch ($x)
{
    case 1:
        echo "數字 1";
        break;
    case 2:
        echo "數字 2";
        break;
    case 3:
        echo "數字 3";
        break;
    default:
        echo "不是1至3之間的數字";
}
?>
  

在上述代碼中,判斷變量$x的值,將它與case的值進行比較。如果存在匹配的case,則執行與該case關聯的代碼。如果沒有case為真,則執行default中的代碼。

(3)for循環

for循環執行代碼塊指定的次數。下面的例子顯示了從0到3的數字。


<?php 
for ($x=0; $x<=3; $x++) {
    echo "數字是:$x <br>";
} 
?>
  

其運行效果如圖2-19所示。

(4)while循環

while循環當指定條件為真時執行代碼塊。

下面的例子首先把變量$x設置為1($x=1),然後執行while循環(只要$x小於或等於5)。循環每運行一次,$x將遞增1。


<?php 
$x=1; 
while($x<=5) {
    echo "這個數字是:$x <br>";
    $x++;
} 
?>
  

其運行效果如圖2-20所示。

圖2-19 for循環示例

圖2-20 while循環示例

6.數組

數組能夠在一個變量名中存儲許多值,並且能夠通過引用下標號來訪問某個值。

在PHP中,創建數組使用array函數。常用的數組類型有索引數組和關聯數組。

索引數組的索引是自動分配的(索引從0開始)。下面的代碼創建了一個索引數組。


$office = array('word', 'excel', 'outlook', 'access'); 
  

該數組的名稱為office,第一個元素的值是word,第二個元素的值是excel,第三個元素的值是outlook,第四個元素的值是access。

關聯數組的創建方法如下。


array( [key =>]value , ... )// key 可以是 integer 或者 string;value 可以是任何值
  

下面的代碼創建了一個關聯數組。


$age=array("張三"=>"25","李四"=>"27","王五"=>"33");
  

它定義了3個元素,以「張三」、「李四」、「王五」為鍵名,他們的年齡為各自的值。

實際上,索引數組是一種特殊的關聯數組。

下面演示了創建及遍歷數組的方法。


<?php
$office = array('word', 'excel', 'outlook', 'access'); 
$arrlength=count($office);
for($x=0;$x<$arrlength;$x++) {
    echo $office[$x];
    echo "<br>";
}
$age=array("張三"=>"25","李四"=>"27","王五"=>"33");
foreach($age as $key=>$value) {
    echo "Key=" . $key . ", Value=" . $value;
    echo "<br>";
}
?>
 

程序執行的效果如圖2-21所示。

7.函數

在程序設計中,經常將一些常用的功能模塊編寫成函數,供程序或其他文件使用。函數就像一些小程序,用它們可以組成更大的程序。用戶定義的函數聲明以「function」開頭。

這裡創建了名為「familyName」的函數。左花括號「{」表示函數代碼的開始,而右花括號「}」表示函數的結束。

下面例子中的函數有兩個參數$name和$year。當調用familyName函數時,同時要傳遞名字(如「三」)和出生年(如1980),這樣會輸出姓相同但名不同的姓名,以及出生年。


<?php
function familyName($name, $year) {
    echo "張$name. 出生於$year <br>";
}

familyName("三","1980");
familyName("四","1982");
familyName("五","1985");
?>
  

上述程序執行的效果如圖2-22所示。

圖2-21 數組示例

圖2-22 函數示例

8.類

類是變量與作用於這些變量的函數的集合。變量通過var定義,函數通過function定義,而類通過下面的語法定義。


<?php
class Cart {
    var $items;  // 購物車中的物品

    // 將 $num 個 $artnr 物品加入購物車
    function add_item($artnr, $num) {
        $this->items[$artnr] += $num;
    }
}
?>
  

上面的例子定義了一個Cart類,這個類由購物車中的商品構成的數組和一個用於向購物車中添加商品的函數組成。

類的用法舉例如下。


<?php
$cart = new Cart;
$cart->add_item("手機", 3);
?>
  

上述代碼創建了一個Cart類的對象$cart,對像$cart的方法add_item被調用時,添加了3件「手機」商品。