PHP入门 - 基础语法

PHP(全称:PHP:Hypertext Preprocessor,即“PHP:超文本预处理器”)是一种开源的通用计算机脚本语言,尤其适用于网络开发并可嵌入HTML中使用。PHP的语法借鉴吸收C语言、Java和Perl等流行计算机语言的特点,易于一般程序员学习。PHP的主要目标是允许网络开发人员快速编写动态页面,但PHP也被用于其他很多领域。

PHP的应用范围相当广泛,尤其是在网页程序的开发上。一般来说PHP大多运行在网页服务器上,通过运行PHP代码来产生用户浏览的网页。PHP可以在多数的服务器和操作系统上运行。

PHP标记符

PHP标记符以 <?php 开头,以 ?> 结尾。如果是纯粹的PHP程序 ?> 标识符是可以省略的。PHP 代码和 HTML 代码是可以混编的,使用 <!DOCTYPE html> 声明Html的头,使用 <!doc> 创建Html的模板,就可以进行混编了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
echo "Hello PHP";
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>PHP Tag</title>
</head>
<body>
Hello HTML
<?php
echo "Hello PHP"
?>
</body>
</html>

最终输出:

1
Hello PHP Hello HTML Hello PHP

PHP变量

在PHP中定义一个变量非常简单,只需要用一个美元符号 $ 开始:

1
2
3
4
$a = 10;
$a = 20;
$b = 5;
echo $a + $b;

PHP常量

PHP的常量是使用 const 关键字来定义:

1
2
const THE_VALUE = 100;
echo THE_VALUE;

需要注意的是, const 关键字是在PHP5以后引入的,如果运行在低版本的PHP上会出错,对于低版本的PHP而言,可以使用 define 声明常量:

1
2
define('THE_STRING','Hello PHP4');
echo THE_STRING;

define 虽然可以声明常量 但两者还是有所不同,const 本身就是一个语言结构,而 define 是一个函数。另外 const 在编译时要比 define 快很多,两者的不同还体现在以下几点:

  1. const用于类成员变量的定义,一经定义,不可修改。define不可用于类成员变量的定义,可用于全局常量。
  2. const可在类中使用,define不能。
  3. const不能在条件语句中定义常量。

PHP函数

PHP的函数声明和其他语言并没有很大区别,它的语法如下:

1
2
3
4
5
6
function traceHelloPHP() {
echo "Hello PHP<br>";
echo 'Hello World';
}
traceHelloPHP();

这就是一个没有传入参数,也没有返回值的PHP函数。

在PHP中,函数也可以作为一个变量来执行,它的语法如下:

1
2
3
4
5
6
7
function traceHelloPHP() {
echo "Hello PHP<br>";
echo 'Hello World<br>';
}
$func = 'traceHelloPHP';
$func();

在PHP中,具有传入参数的函数语法如下:

1
2
3
4
5
6
7
function helloTo($name) {
echo 'Hello '.$name;
}
$str = 'Geek';
helloTo($str);
helloTo('Nerd');

从上面可以看出PHP中的字符串是以 . 进行相加。多个传入参数使用 , 进行分割。

1
2
3
4
function num($a, $b) {
echo "a=$a , b=$b".'<br>';
}
num(2, 3);

具有返回值的函数,直接使用 return 关键字就可以了:

1
2
3
4
function add($a, $b) {
return $a + $b;
}
echo add(10,2).'<br>';

PHP控制流

if else 控制语句语法如下,其中使用HTML嵌套PHP是为了防止客户端与服务器端的编码方式不一致,所以在Html的Head中显式声明编码方式为UTF-8:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Controll Flow</title>
</head>
<body>
<?php
function getLevel($score) {
if ($score>=90) {
return '优秀';
}
else if ($score>=80) {
return '良好';
}
else if ($score>=60) {
return '及格';
}
else {
return '不及格';
}
}
echo getLevel(70);
?>
</body>
</html>

switch case 控制语句语法如下,在PHP中,switch case 控制语句如果有return就不需要break

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Controll Flow</title>
</head>
<body>
<?php
function getLevelSwitchCase($score) {
switch (intval($score/10)) {
case 10:
case 9:
return '优秀';
case 8:
return '良好';
case 7:
case 6:
return '及格';
default:
return '不及格';
}
}
?>
</body>
</html>

PHP循环

PHP的for循环语法如下:

1
2
3
for ($i=0; $i<100; $i++) {
echo $i.'<br>';
}

white 循环的语法如下:

1
2
3
4
5
$i = 0;
while ($i<100) {
$i++;
echo $i.'<br>';
}

do white 循环的语法如下:

1
2
3
4
5
6
7
8
$i = 0;
do {
$i++;
echo $i.'<br>';
}
while (
$i<10
);

break和continue的使用方法如下:

1
2
3
4
5
for ($i=0; $i<100; $i++) {
echo $i.'<br>';
if ($i==50) {break;}
if ($i==20) {continue;}
}

PHP 逻辑运算

在PHP中,逻辑与的运算符是 && ,逻辑或的运算符是 || ,逻辑非的运算符是 != ,它的用法如下:

1
2
3
4
5
6
7
8
function traceNum() {
for ($i=0; $i<100; $i++) {
if ($i%2==0 && $i%3==0) {
echo $i.'<br>';
}
}
}
traceNum();

PHP字符串

获取指定字符在字符串中的位置:

1
2
3
$str = 'Hello PHP!';
$index = strpos($str,'o');
echo $index.'<br>';

从指定位置截取字符串:

1
2
3
$str = 'Hello PHP!';
$substr = substr($str, 2, 3);
echo $substr.'<br>';

按长度分割字符串:

1
2
$str = 'Hello PHP!';
print_r(str_split($str,3));

按指定字符修改字符串:

1
2
$str = 'Hello PHP!';
print_r(explode(' ',$str));

字符串连接:

1
2
3
$num = 100;
echo $str.'Java';
echo "$str Java<br>$num";

需要注意的是,字符串的连接有两种方式:."" ,数组需要用 print_t 来输出。

PHP数组

PHP数组的声明和赋值:

1
2
3
4
$arr = array(1,2,3);
$arr[3] = 4;
$arr[0] = 'Hello';
print_r($arr);

PHP数组的尾部添加:

1
2
3
4
for ($i=0; $i<10; $i++) {
array_push($arr, "item$i");
}
print_r($arr);

PHP的数组可以以key-value的方式存储数据:

1
2
3
$arr['h'] = 'Hello';
$arr['w'] = 'World';
echo $arr['h'];

PHP的数组兼具数组和字典的特性:

1
2
$dic = array(0=>'hello',1=>'PHP','s'=>'Swift','j'=>'Java');
print_r($dic);

Include和Require

Include和Require是PHP引入头文件的两种方式,Include是包含关系,而Require是依赖关系,如果包含文件查找不到的话,并不会提示错误。而如果依赖文件查找不到的话,肯定是会报错的。

实际上这两个关键字的功能是一样的,只是错误提示的级别不一样。Include和Require还有两个对应的关键字:include_once和require_once,它们的作用是为了保证被引入的PHP文件只会执行一次。

在工程较大时,可能会有多个地方引入了同一个PHP文件,可能会有意想不到的错误。include_once和require_once就是为了避免这样的事件发生。