微信公众平台开发:从零基础到ThinkPHP5高性能框架实践
上QQ阅读APP看书,第一时间看更新

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所示。

图2-16 变量示例

3.常量

PHP中通过define()函数定义常量。合法的常量名只能以字母和下划线开始,后面可以跟任意字母、数字或下划线。常量一旦定义就不能再修改或者取消定义。常量定义的示例代码如下。

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

上述代码定义名为TOKEN的常量,它的值为weixin,在浏览器中的运行效果如图2-17所示。

图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所示。

图2-19 for循环示例

(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-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所示。

图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-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件“手机”商品。