学习一门语言就如同建造一栋房子,要想盖一栋安全、稳固的大厦,必须有一个夯实的地基。同样的,想要掌握并熟练使用PHP语言开发,必须充分了解PHP语言的基础知识。
本篇文章将光速带大家快速通关PHP的基础语法,尽量详细的同时过滤掉大量的废话。有关环境配置等我想网上已经有许多教程了,
我自己也写过有关环境配置的教程:PHP搭建开发环境(Windows系统)-优快云博客
直接开干!!
1、PHP标记与注释
PHP是一门嵌入式脚本语言,经常被嵌入在HTML中使用。我们先讲PHP标记、注释和语句结束符的使用.
1.1 PHP标记
在进行PHP开发时,一般是先编写一个简单的HTML网页,然后将PHP代码嵌入HTML中。为了区别开HTML和PHP代码,需要使用标记对PHP代码进行标识。
我们先需要创建一个后缀为.php的文件,然后如下:
<body>
<p>Hello PHP</p>
<p>
<?php echo "Hello PHP";?>
</p>
</body>
上面的例子里“<? php echo "Hello PHP";?>”就是一段嵌入在HTML中的代码;
其中 <?php 就是PHP的开始标记,而 ?> 自然就是结束标记, echo 用于输出字符串。
// 除了这样的标记 还有如下其他标记:
<? ?> //这样就是短标记,需要在php.ini文件中设置short_open_tag的值为on。
//示例:
<?
echo 'Hello world!'
?>
一般不推荐使用上述的短标记,了解即可。
1.2 注释
注释在被解析时会被解析器忽略。在PHP中最常用的分别是“//”和“/* */”。
// 单行注释
/*
多行注释
*/
但我们需要大规模的注释掉一些代码,也就是不执行这些代码,可以先在编译器中选中需要注释的代码,然后按:
control键 + “/”键 ,
就可以实现将大规模代码注释掉;
1.3 语句结束符
在PHP中当一条语句结束后需要在结尾写上“;”,也就是一个英文的分号。
如果不写结束符那么程序就会报错!
比如:
<?php
$name = 'zhangsan'
echo $name
?>
它就会报这样的错误:
Parse error: syntax error, unexpected token "echo" in C:\web\Apache24\htdocs\index.php on line 37
如果在之前第二行代码的结尾加上“;”作为结束符则不会报错了。
2、变量与常量
在PHP中,变量和常量是用来保存数据的。变量用来保存可变的数据,常量用来保存不可变的数据。
2.1变量
在PHP中变量是由 “$”符号和变量名组成的。
PHP是弱类型语言,变量不需要事先声明就可以直接进行赋值使用。
PHP的变量赋值分为两种:
- 传值赋值
- 引用赋值
传值赋值示例如下:
$age = 14; //定义变量$age, 赋值为14
$num = $age; //将$age赋值给$num
$age = 100; // 将$age的值修改为100
echo $num;
上面第二行代码就是对变量$num的传值赋值,当$age的值被修改为100时,$num的值依然是2.
引用赋值,就是在要赋值的变量前添加“&”符号,示例如下:
$age = 14;
$num = &$age; // 引用赋值
$age = 100; // 将$age的值修改为100
echo $num; // $num的值也变为了100
总结:传值赋值就是将某一个变量的值传给另一个变量,如示例$age是14的时候,就将值“14”传给了$num,故而即使$age的值改变也无法再次影响$num;
而引用赋值这是将一个变量直接引用给另一个变量,这时传给$num的就不再是14了,而是将$age作为值引用给了$num。
2.2标识符的命名规则:
- 只能由字母、数字、下划线组成;
- 可以有一个或多个字符组成,必须以字母或者下划线开头;
- 当标识符作为变量名时,区分大小写;
- 如果标识符由多个单词组成,应该使用下划线进行分隔,如:user_name。
示例:
$name; //合法
$_name; // 合法
$2222; // 非法
$dda dad; //非法
$*dawe; //非法
2.3 可变变量
为了在开发时动态的改变变量的名称,PHP提供了一项特殊的变量用法:可变变量。
$a = 'name';
$name = 'Hello';
$Hello = 'Lucy';
echo $a; // 输出的结果为name;
echo $$a; // 输出的结果为Hello;
echo $$$a; // 输出的结果为 Lucy;
理解:我们可以这样看,$a的值自然是name,那 “$$a” 我们可以看成 “$” + “$a”,而“$a”的值就是等于name,那么 “$$a” 也就是“$” + “name” = “$name”, 而我们之前已经对“$name”赋过值了,为“Hello”,那么也就可以得到 “$$a” 的值为 “Hello”, 而 “$$$a”也是以此类推。
需要考虑的是,若变量$a的值是数字,则可变变量$$a就会出现非法变量名。因此,开发时可变变量的运用应酌情考虑。
2.4常量
常量是用来保存脚本在运行过程中值始终不变的量。
特点:一旦被定义就无法再被修改或重新定义。
例如,在数学中常用的圆周率π就是一个常量,它的值是固定不变的。
PHP中通常使用define()和 const 关键字来定义常量,如下:
define('CON', 'hello'); //定义常量CON,值为hello,对大小写敏感;
echo CON; // 输出结果 hello;
以上示例里,define()的小括号中有两个参数,使用逗号分隔。第一个参数表示常量的名称,第二个则是常量的值。
注意:常量名在默认情况下对大小写敏感,所以CON和con不是同一个常量。
如果不想要对大小写敏感可以写第三个参数,是布尔值,为true和false,
为true则不区分大小写,如下:
define('CON', 'Hello', true); // 定义常量CON,值为Hello,不区分大小写。
echo con; // 输出结果为 Hello ;
echo CON; // 输出结果为 Hello ;
另外获取常量的值还可以使用constant(),如下:
define('CON', 'hello'); // 定义常量CON,值为hello;
echo constant('CON'); // 输出结果:hello
使用const关键字定义常量,如下:
const PI = 3.14; // 定义常量PI, 赋值为3.14;
echo PI; // 输出常量PI的值,结果为3.14
2.5 预定义常量
为了方便开发人员使用,PHP提供了预先定义好的常量来获取PHP中的信息,在需要时可以直接echo输出预定义常量就可以获取相关信息,如下表格:
常量名 | 功能描述 |
---|---|
PHP_VERSION | 获取PHP的版本信息 |
PHP_OS | 获取解析PHP的操作系统类型 |
PHP_INT_MAX | 获取PHP中整型数的最大值 2147483647 |
PHP_INT_SIZE | 获取PHP中整型数的字长 |
E_ERROR | 表示运行时致命性错误, 用1表示 |
E_WARNING | 表示运行时警告错误(非致命),用2表示 |
E_PARSE | 表示编译时解析错误,用4表示 |
E_NOTICE | 表示运行时提醒消息,用8表示 |
使用非常简单,如下:
echo PHP_VERSION; // 输出PHP的版本信息
3、 数据类型
任何一门编程语言都离不开对数据的处理与运算。
3.1 数据类型分类
PHP中支持3类数据类型,分别为标量类型、复合类型和特殊类型。
需要知道的是,PHP是一种弱类型语言,不需要在声明变量时指定其类型,变量的类型可以在代码运行时有所改变。
$num = 124; // 此时$num为整型
$num = 'hello'; // 此时$num为字符串型
下面开始讲解各种数据类型;
1、布尔型
布尔型是PHP中常用的数据类型,通常用于逻辑判断,它只有true和false两个值,意思就是“真”和“假”,并且不区分大小写
$flag1 = true; // 将true赋值给$flage1;
$flage2 = false; // 将false赋值给$flage2;
2、整型
整型用来表示整数,它可以用十进制、八进制、十六进制表示,且前面加上“+” 或 “-” 符号,可以用来表示正数或者负数。
八进制用0~7表示,前面必须加上0;
十六进制用0~9和A~F表示,前面必须加上 0x;
如下:
$soct = 071; // 八进制数
$dec = 59; // 十进制数
$hex = 0x3b ; // 十六进制数
上面数字都是十进制中的59;
3、浮点型
浮点型可以用来保存浮点数或者整数,浮点数在程序中用来表示小数。在PHP中,通常由两种方式表示浮点数:标准格式和科学计数法格式。如下:
$fnuml = 1.759; // 标准
$fnum2 = -4.382 // 标准
$fnum3 = 3.14E5 // 科学计数法
$fnum4 = 7.469E-3; // 科学计数法
无论哪种格式,浮点数的有效位数都是14位。
4、字符串型
字符串是由连续的字母、数字或字符组成的字符序列。使用单引号或双引号包裹字符串;
echo "Hello world";
在PHP中 “.”是字符串的连接符,用于连接字符串、数字、变量或常量等。
echo 'Hello'.'world' // 输出结果:Helloworld
3.2 字符串解析
单引号字符串和双引号字符串是有区别的:
- 单引号字符串:书写的变量名会原样输出;
- 双引号字符串:变量名会被解析成它的值。
如下:
$name = 'Tome';
$area = "CHina";
echo $name . "from $area"; // 输出结果: Tom from China
echo $name . 'from $area'; // 输出结果: Tome from $area
在双引号字符串中,可能会出现变量名不确定的情况,用“{}”进行界定:
$ap = 'ma';
$apple = 'test';
echo "$apple"; // 输出结果: test
echo "{$ap}ple"; // 输出结果: maple
还饿可以使用转义字符,双引号也支持“\n”换行、 “\t”制表等转义字符的使用,单引号只支持“\”和“\\”。如下:
echo "嵌套\"双引号\""; // 嵌套"双引号"
echo "嵌套\'单引号\'"; // 嵌套\'单引号\'
3.3 数据类型检测
使用 var_dump() 输出来查看变量的数据类型,如下:
$a = 1;
var_dump($a); // 输出结果: int(1)
$a = $a + 2.0;
var_dump($a); // 输出结果: float(3)
PHP 提供了一组 is_*() 的内置函数,括号里是要检测的值:
函数名称 | 功能描述 |
---|---|
is_bool() | 检测变量是否是布尔型 |
is_a() | 如果对象属于该类或该类是此对象的父类则返回 TRUE |
is_array() | 检测变量是否是数组 |
is_callable() | 检测参数是否为合法的可调用结构 |
is_dir() | 判断给定文件名是否是一个目录 |
is_double() | is_float() 的别名 |
is_float() | 检测变量是否是浮点型 |
is_file | 判断给定文件名是否为一个正常的文件 |
is_int() | 检测变量是否是整数 |
is_null() | 检测变量是否为 NULL |
is_numeric() | 检测变量是否为数字或数字字符串 |
is_object() | 检测变量是否是一个对象 |
is_string() | 检测变量是否是字符串 |
is_resource() | 检测是否为资源 |
例如:
var_dump(is_bool("1")); // bool(false)
3.4 强制类型转换
强制类型 | 功能描述 | 强制类型 | 功能描述 |
---|---|---|---|
(boolean) | 转换为布尔型 | (float) | 转换为浮点型 |
(string) | 转换为字符串型 | (array) | 转为数组 |
(integer) | 转换为整型 | (object) | 转换为对象 |
例如:
var_dump((boolean)-5.9);
4、运算符
运算符是用来对数据、变量和常量进行计算的符号。
4.1 算术运算符
PHP中的算数运算符其实与大多数编程语言的算数运算符是一样的;
运算符 | 作用 | 范例 | 结果 |
---|---|---|---|
+ | 加 | echo 5 + 5; | 10 |
- | 减 | echo 6 - 4; | 2 |
* | 乘 | echo 3 * 4; | 12 |
/ | 除 | echo 5 / 5; | 1 |
% | 取模(即算术中的取余数) | echo 7 % 5; | 2 |
使用过程中应当注意一下几点:
- 应当遵循数学中的“先乘除, 后加减” 的原则;
- 取模运算时,运算结果的正负取决于被模数( % 左边的数字)的符号,与模数( % 右边的数字无关)。 如 : (-11) % 4 = -3, 而 8 % (-7) = 1;
4.2赋值运算符
赋值运算符是一个二元运算符,有两个操作数,用来把赋值运算符右边的值赋值给左边的变量;
需要注意的是, “=”表示赋值,而并非数学上的相等;
4.3错误抑制运算符
PHP中有一个比较特殊的运算符,错误抑制运算符;
在可能出现错误的代码前使用,不会直接将错误显示给用户;
$num1 = 10 / 0; //报错: Fatal error: Uncaught DivisionByZeroError: Division by zero in
$num2 = @(10 / 0);
4.4 比较运算符
"===" 和 "!==" 在进行比较时,不仅会比较数值是否相等,还会比较数据类型是否相等;
4.5合并运算符
用于简单的数据存在性判定:
<条件表达式> ?? <表达式>
先求第一个 条件表达式 的值是否存在,如果存在则返回 条件表达式 的值;如果 条件表达式 的值不存在,则返回 表达式 的值
例子:
$age = $age ?? 10;
返回结果为:
10
4.6三元运算符
<条件表达式> ? <表达式1> : <表达式2>
<?php
$age = 19 ? '18' : '19';
echo $age; // 返回结果为 18;
?>
4.7逻辑运算符
是非常基础的的 与 或 非 的概念。
5、流程控制
if语句
单分支语句
if (判断条件) {
//代码段
}
比如:
if ($a > $b){
echo "$a 大于 $b";
}
我们可以这样理解:
将 if 理解为如果,如果$a > $b 那么就会输入一下代码......
if ..... else语句
双分支语句
if (判断条件0) {
//代码段1
}else if (判断条件1){
//代码段2
}else{
//代码段3
}
switch语句
switch (表达式){
case 值1:
break;
case 值2:
break;
...
default:
代码段n;
}
举一个小例子,很容易就懂了:
<?php
$jjlong = 20;
switch ($jjlong){
case 10:
echo '10cm勉勉强强啦';
break;
case 20:
echo "20??快跟我的差不多了";
break;
default:
echo '你永远也企及不到我的30cm';
}
?>
输出结果是:
20??快跟我的差不多了
6、循环结构
PHP循环语句有while和do....while实质上就是设置循环条件然后执行循环体。
6.1 while
while(循环条件){
// 循环体
}
意思就是如果 循环条件 为 真,则执行 循环体 的内容。
比如
while(true){
echo "Hello World";
}
你可以去执行一下这串代码,在网页中看看;
6.2 do....while
do{
执行语句;
}while (循环条件);
就是先执行一遍循环体里的内容,在来判断是否还需要执行。
------------
本章到此结束
希望能帮助到你!!