PHP的语法和C、C++等语言的语法很相似,有C语言基础的读者,可以非常轻松地掌握PHP的基本语法。由于PHP的语法比较简单,如果没有任何语言基础,也可以快速地熟悉。   1.第一个程序   打开编辑器Notepad++,在里面编写如下内容。 ~~~ <?php //作者:方倍 echo "你好,微信!"; ?> ~~~   将上述内容保存为hello.php,并且存放在web根目录下,然后在浏览器中输入http://localhost/hello.php ,将可以看到浏览器显示出“你好,微信!”。如图2-15所示。 ![](https://box.kancloud.cn/a0d90e4b7f84dd0deb0faab5a137b369_368x146.png)      图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所示。 ![](https://box.kancloud.cn/5defbd7fe22d2c73a22958d62b2e9d42_449x174.png)           图2-16变量   3.常量   在PHP中通过define()函数定义一个常量。合法的常量名只能以字母和下划线开始,后面可以跟着任意字母、数字或下划线。常量一旦定义就不能再修改或者取消定义。常量定义的示例代码如下所示: ~~~ <?php define("TOKEN", "weixin"); echo TOKEN; ?> ~~~   上述代码定义名为TOKEN的常量,它的值为weixin,在浏览器中运行效果如图2-17所示。 ![](https://box.kancloud.cn/2ca0bb69ea97fe949c22c6b69417be5e_479x137.png)           图2-17常量   4.运算符   运算符是指,通过一个或多个表达式,来产生另外一个值的某些符号,如“+”、“%”“.”等都是运算符。   在PHP中,使用符号“=”表示赋值。它的含义是将一个值指定给一个变量,如“$a=5”表示将5赋给$a。   PHP的算术运算符有加(+)、减(-)、乘(*)、除(/)和取模(%)、取反(-,即取负值)。例如“$x + $y”表示变量$x和变量$y的值进行相加。 PHP有递增/递减运算符。递增是指对当前表达式的值增加1,递减正相反,对表达式的值减1。例如“++$x”表示$x 加一递增,然后返回 $x;“$x--”表示先返回 $x,然后$x减一递减。   PHP的字符串运算符只有一个,即字符串的连接运算符“.”。例如“$x="Hello"; $x .= " weixin!";”表示变量$x的末尾再加下字符串“ weixin”。这时$x的值为“Hello weixin”。   PHP的逻辑运算符有与(and)、或(or)、异或(xor)、与(&&)、或(||)、非(!)。   PHP的比较运算符有等于(==)、全等(===)、不等于(!=)、不等于(<>、不全等(!==)、大于(>)、小于(<)、大于或等于(>=)、小于或等于(<=)。   除此之外,还有条件运算符“expr1 ? expr2 : expr3”,它的计算规则是:如果表达式expr1的值为TRUE,那么整个表达式的值就取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所示。 ![](https://box.kancloud.cn/13b75f07215bb8cf18d274c5aa98ee50_479x323.png)           图2-18运算符   5.流程控制   PHP程序由语句构成,通常情况下,程序是从第一条语句开始执行,按顺序执行到最后一句。但有时因为某种情况,需要改变程序的执行顺序,这就需要对程序的流程进行控制。   程序的执行方式有3种:顺序执行、选择执行、循环执行,通过使用这3种控制结构,可以改变程序的执行顺序,以满足解决问题的需求。顺序结构使程序从第一条语句开始,按顺序执行到最后一句。在选择结构中,程序可以根据某个条件是否成立,选择执行不同的语句。在循环结构中,可以使程序根据某种条件和指定的次数,使某些语句执行多次。 if语句/if...else语句/if...elseif....else语句   在 PHP 中,我们可以使用以下条件语句:  if 语句 - 如果指定条件为真,则执行代码  if...else 语句 - 如果条件为 true,则执行代码;如果条件为 false,则执行另一端代码  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,则输出“上午!”;如果小于18,则输出“下午!”;否则输出"晚上!"。   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为真,则执行default中的代码。   For 循环   for 循环执行代码块指定的次数。下面的例子显示了从 0 到 3 的数字: ~~~ <?php for ($x=0; $x<=3; $x++) { echo "数字是:$x <br>"; } ?> ~~~   它运行效果如图2-19所示。 ![](https://box.kancloud.cn/5f7c1c031d96ca9c9036d2f82c9d4b83_479x185.png)           图2-19for循环   While 循环   while 循环在指定条件为 true 时执行代码块。   下面的例子首先把变量 $x 设置为 1($x=1)。然后执行 while 循环,只要 $x 小于或等于 5。循环每运行一次,$x 将递增 1: ~~~ <?php $x=1; while($x<=5) { echo "这个数字是:$x <br>"; $x++; } ?> ~~~   它运行效果如图2-20所示。 ![](https://box.kancloud.cn/a620f72c224888548003c733eb41a4fa_479x208.png)           图2-20while循环   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所示。 ![](https://box.kancloud.cn/0d31202b313be194f5d2746740ef72c4_479x241.png)           图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所示。 ![](https://box.kancloud.cn/66ac3c0c969b1b48e0e62ead63ce81f7_471x162.png)           图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件“手机”商品。