1.什么是常量?
常量可以理解为值不变的全局的量(如圆周率);或者是常量值被定义后,在脚本的其他任何地方都不可以被改变。PHP中的常量分为自定义常量和系统常量
使用define()函数来定义常量:
第一个参数“constant_name”为必选参数,常量名称,即标志符,常量的命名规则与变量的一致,不带美元符号。 第二个参数“value”为必选参数,它是常量的值 第三个参数“case_sensitive”为可选参数,指定是否大小写敏感,设定为true表示不敏感,一般不指定第三个参数的情况下,默认第三个参数的值为false。
define("PI",3.14,true); var_dump(PI);//3.14 var_dump(pi);//3.14 $a="pi"; $b=pi; var_dump($b);//3.14 var_dump($a);//pi echo constant($a);//3.14
define("PI",3.14,true);
var_dump($b);//3.14 var_dump($a);//pi echo constant($a);//3.14 if (!defined("pi")) { define("PI",3.1415726,true); } echo pi;//3.14
2.php运算符
算数运算符
* 赋值运算符
* 比较运算符
* 逻辑运算符
* 三元运算符
三元运算符
(“?:”)三元运算符也是一个比较运算符,对于表达式
(expr1)?(expr2):(expr3),如果expr1的值为true,则此表达式的值为expr2,否则为expr3。
$c=1; $d=2; $e=5; echo $c.=$d;//12 echo ($d<$c || $d<$e)?'输入正确':'输入错误';//输入正确
3.php语法结构
顺序结构(代码按照顺序执行结构)
分支结构(选择结构)(if、if else、if elseif else、switch等)
循环结构(for、do while()等)
4.PHP超全局变量
超全局变量在 PHP 4.1.0 中引入,是在全部作用域中始终可用的内置变量。
PHP中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。在函数或方法中无需执行 global $variable; 就可以访问它们。
(1)$_GET 变量是一个数组,内容是由 GET 方法发送的变量名称和值
$_GET 变量用于收集来自 method="get" 的表单中的值。从带有 GET 方法的表单发送的信息,对任何人都是可见的(会显示在浏览器的地址栏),并且对发送的信息量也有限制
<?php
print_r('<pre>');
print_r($_GET);
?>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <form action="" method="get"> <input type="text" name="username"> <input type="text" name="password"> <input type="submit" value="提交"> </form> <a href="abc.php?a=123&b=456">登录</a> </body> </html>
(2)$_POST变量是一个数组,用于收集来自 post 的表单中的值
安全性高、POST方法不依赖于URL,不会显示在地址栏。该方法可以没有限制地传递数据到服务器,所有提交的信息在后台传输,用户在浏览器端无法看到该过程。
(3)$_SERVER 是一个包含了诸如头信息(header) 、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建
练习:写一个判断请求方式的IS_POST常量
define('IS_POST',$_SERVER['REQUEST_METHOD']=='POST'?true:false); if (IS_POST) { echo "<script>alert('是post请求');</script>"; }else{ echo "<script>alert('不是post请求');</script>"; }
(4)$request
$_REQUEST 变量用于收集HTML表单提交的数据, $_REQUEST不是一个函数,它是一个超全局变量,里面包括有:
$_GET
$_POST
$_COOKIE
但是用$_REQUEST()比较$_GET, $_POST, $_COOKIE执行效率相对较低!
(5)其他超全局变量:
$GLOBALS - 引用全局作用域中可用的全部变量
$_FILES - 存储各种与上传文件有关的信息
$_ENV - 一个包含服务器端环境变量的数组
$_COOKIE - 用于取回 cookie 的值
$_SESSION - 用于取回 session 的值
5.函数
function 函数名(参数1,参数2,…){ //内容区域 return //返回值(如果需要) }
注意:函数命名时不可以使用已经声明过的函数或者PHP内置的函数名称
当我们创建了自定义函数,为了确保程序调用的函数是存在的,经常会先使用function_exists判断一下函数是否存在。
function sum($a,$b){ return $a+$b; } echo sum(2,3);//5 if (!function_exists('sum')) {//若不写这个判断,重名后会报错 function sum($a,$b){ return $a+$b; } } echo sum(4,5);//9
如果函数内部没有使用return返回值时函数返回值为null
* 函数无论被调用多少次,函数只被编译一次
function abc(){ $a=1; echo $a; $a++; echo '<br>'; } abc();//1 abc();//1 abc();//1
* 函数名不区分大小写,注意规范
在函数外声明的全局变量,函数内无法直接使用全局变量
$b=123; function sum(){ echo $b; } sum();//报错
传参可以使用外部变量
$b=123; function sum($c){ echo $c; } sum($b);//123
内部变量改变不影响外部调用
$c=34; function a(){ $c=23; echo $c; } a(); echo '<br>';//23 echo $c;//34
函数参数的传址赋值,内部变量发生改变外部也随之改变
$d=12; function b(&$d){ $d='23457'; echo $d; } b($d);//23457 echo $d;//23457
我们可以使用global引入外部变量来使用(不推荐)
$b=56; function sum(){ global $b; echo $b; } sum();
函数中还可以定义静态变量,值将会保存在内存中
function abc(){ static $a=1; echo $a; $a++; echo '<br>'; } abc();//1 abc();//2 abc();//3
6.php代码复用
include 和 require
*就像把文件粘贴到使用函数的地方
*include 和 require 的区别在于当处理错误时include产生警告错误程序继续进行,require产生致命错误程序停止
include '123.php';//找不到文件,报错 echo '123';//123
require '123.php';//找不到文件报错,无法进行其他操作 echo '123';//报错
include_once 和 require_once
与include 和 require类似,区别在于如果该代码被引用超过一次后就不再引用,避免了函数重复定义,变量重新赋值
7.php抑错符
PHP中提供了一个错误控制运算符“@”,对于一些可能会在运行过程中出错的表达式时,我们不希望出错的时候给客户显示错误信息,于是,可以将@放置在一个PHP表达式之前,该表达式可能产生的任何错误信息都被忽略掉; 错误控制前缀“@”不会屏蔽解析错误的信息,不能把它放在函数或类的定义之前,也不能用于条件结构例如if和foreach等