PHP入门基础
作者:Seiya
时间:2019年05月21日
前言
PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。
PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
基本语法
代码标识
PHP 脚本以 <?php 开始,以 ?> 结束。
<?php
echo "Hello World!";
?>
提示:
PHP 脚本可以放在文档中的任何位置。
注释
数据类型
标量类型
是数据结构中最基本的单元,只能储存一个数据,包括整型int(integer)、浮点型float、字符串string、布尔型boolean四类。
1. String
字符串型可以用三种方法定义:单引号形式、双引号形式和Heredoc结构形式:
// Heredoc结构形式
<?php
$string = <<< EOF
我有一只小毛驴,我从来也不骑。
EOF;
echo $string;
?>
注意:
当双引号中包含变量时,变量会与双引号中的内容连接在一起;
当单引号中包含变量时,变量会被当做字符串输出。
$love = "I love you!";
$string1 = "慕课网,$love";
$string2 = '慕课网,$love';
//输出:
慕课网,I love you!
慕课网,$love
2. Integer
类似于常见的整数。它可以用十进制、八进制、十六进制指定。
3. Float
浮点型(浮点数、双精度数或实数),也就是通常说的小数,可以用小数点或者科学计数法表示。科学计数法可以使用小写的e,也可以使用大写的E。
浮点数不能作于比较运算(浮点数的加减运算有误差)
4. Boolean
布尔类型中 FALSE 的七种情况:整型0(0),浮点数0(0.0),字符串0('0'),false,空数组(array()),NULL。
注意:
需要注意的是,当我们用”echo”指令输出布尔类型时,如果是“true”则输出的是“1”,“false”则什么也不输出。
复合类型
1. Array
数组可以在一个变量中存储多个值。
2. Object
在 PHP 中,对象必须声明。
首先,你必须使用class关键字声明类对象,然后我们在类中定义数据类型,然后在实例化的类中使用数据类型。
特殊类型
1. NULL
NULL是空类型,对大小写不敏感,NULL类型只有一个取值,表示一个变量没有值,当被赋值为NULL,或者尚未被赋值,或者被unset(),这三种情况下变量被认为为NULL。
<?php
error_reporting(0); //禁止显示PHP警告提示
$var;
var_dump($var); // NULL
$var = null;
var_dump($var1); // NULL
$var = NULL;
var_dump( $var2); // NULL
$var3 = "节日快乐!";
unset($var3);
var_dump($var3); // NULL
?>
2. resource类型
资源(resource):资源是由专门的函数来建立和使用的,例如打开文件、数据连接、图形画布。
我们可以对资源进行操作(创建、使用和释放)。任何资源,在不需要的时候应该被及时释放。如果我们忘记了释放资源,系统自动启用垃圾回收机制,在页面执行完毕后回收资源,以避免内存被消耗殆尽。
变量
变量声明
PHP是一门松散类型的语言,不必向PHP声明变量的数据类型,PHP会自动把变量转换为自动的数据类型。
变量以 $ 符号开始,后面跟着变量的名称。
变量在您第一次赋值给它的时候被创建。
变量的作用域
1. 全局作用域
在所有函数外部定义的变量,拥有全局作用域。
除了函数外,全局变量可以被脚本中的任何部分访问,要在一个函数中访问一个全局变量,需要使用 global 关键字。
提示:
PHP中预定义了几个超级全局变量(superglobals) ,这意味着它们在一个脚本的全部作用域中都可用:
$GLOBALS
$_SERVER
$_REQUEST
$_POST
$_GET
$_COOKIE
$_FILES
$_ENV
$_SESSION
2. 局部作用域
在 PHP 函数内部声明的变量是局部变量,仅能在函数内部访问。
3. static作用域
当一个函数完成时,它的所有变量通常都会被删除。然而,有时候您希望某个局部变量不要被删除,可以使用 static关键字
4. 参数作用域
参数是通过调用代码将值传递给函数的局部变量,参数是在参数列表中声明的,作为函数声明的一部分。
常量
常量可以理解为值不变的量,或者是常量值被定义后,在脚本的其他任何地方都不可以被改变。
PHP中的常量分为自定义常量和系统常量。
常量主要功效是可以避免重复定义,篡改变量值。此外,使用常量还能提高代码的可维护性。
自定义常量
通过使用PHP中的函数define()定义:
<?php
$p = "PII";
define("PI", 3.14);
define($p, 3.1414)
echo PI;
echo "<br />";
echo PII;
// 输出
3.14
3.1414
?>
系统常量
系统常量是PHP已经定义好的常量,我们可以直接拿来使用,常见的系统常量有:
__FILE__
:php程序文件名。它可以帮助我们获取当前文件在服务器的物理位置。__LINE__
:PHP程序文件行数。它可以告诉我们,当前代码在第几行。PHP_VERSION
:当前解析器的版本号。它可以告诉我们当前PHP解析器的版本号,我们可以提前知道我们的PHP代码是否可被该PHP解析器解析。PHP_OS
:执行当前PHP版本的操作系统名称。它可以告诉我们服务器所用的操作系统名称,我们可以根据该操作系统优化我们的代码。
常量获取
使用常量名直接获取值:
<?php define("PI",3.14); $r=1; $area = PI*$r*$r; //计算圆的面积 ?>
使用constant()函数:
它和直接使用常量名输出的效果是一样的,但函数可以动态的输出不同的常量,在使用上要灵活、方便。
<?php define("PI",3.14); $r=1; $area = constant("PI")*$r*$r; //计算圆的面积 ?>
判断常量是否被定义
defined()函数可以帮助我们判断一个常量是否已经定义:
<?php
define("PI1",3.14);
$p = "PI1";
$is1 = defined($p);
$is2 = defined("PI2")
var_dump($is1);
var_dump($is2);
?>
逻辑控制
顺序结构
顺序结构就像一条直线,按着顺序一直往下执行。我们编写的代码默认都是按照顺序结构执行的。
循环控制和条件判断
关于PHP循环控制以及条件判断的语法和C等语言类似,这里不过多记录。
foreach循环
在PHP中foreach循环语句,常用于遍历数组,一般有两种使用方式:不取下标、取下标。
<?php
// 只取值,不取下标
foreach (数组 as 值){
...
}
// 同时取下标和值
foreach (数组 as 下标 => 值){
...
}
?>
运算符
赋值运算符
1. “=”:把右边表达式的值赋给左边的运算数。
它将右边表达式值复制一份,交给左边的运算数。换而言之,首先给左边的运算数申请了一块内存,然后把复制的值放到这个内存中。
2. “&”:引用赋值,意味着两个变量都指向同一个数据。
它将使两个变量共享一块内存,如果这个内存存储的数据变了,那么两个变量的值都会发生变化。
<?php
$a = "我在学习PHP!";
$b = $a;
$c = &$a;
$a = "我天天在学习PHP!";
echo $b."<br />";
echo $c."<br />";
?>
// 输出
我在学习PHP!
我天天在学习PHP!
比较运算符
三元运算符
(“ ? : ”)三元运算符也是一个比较运算符,对于表达式(expr1) ? (expr2) : (expr3),如果expr1的值为true,则此表达式的值为expr2,否则为expr3。
逻辑运算符
逻辑运算符主用是进行逻辑运算的,例如:逻辑与、逻辑或、逻辑异或、逻辑非等,在PHP中常用的逻辑运算符如下表:
连接运算符
字符串连接运算符是为了将两个字符串进行连接,PHP中提供的字符串连接运算符有:
(1)连接运算符(“.”):它返回将右参数附加到左参数后面所得的字符串。
(2)连接赋值运算符(“.=”):它将右边参数附加到左边的参数后。
错误控制运算符
PHP中提供了一个错误控制运算符“@”,对于一些可能会在运行过程中出错的表达式时,我们不希望出错的时候给客户显示错误信息,这样对用户不友好。于是,可以将@放置在一个PHP表达式之前,该表达式可能产生的任何错误信息都被忽略掉;
注意
错误控制前缀“@”不会屏蔽解析错误的信息,不能把它放在函数或类的定义之前,也不能用于条件结构例如if和foreach等。
算术运算符
PHP中的算术运算符与其他语言几乎没有区别,这里不过多记录。