php
php是一个大杂烩,内容及其丰富
什么是 PHP
PHP 是 "PHP Hypertext Preprocessor" 的首字母缩略词
PHP 是一种被广泛使用的开源脚本语言
PHP 脚本在服务器上执行
PHP 没有成本,可供免费下载和使用
什么是 PHP 文件
PHP 文件能够包含文本、HTML、CSS 以及 PHP 代码
PHP 代码在服务器上执行,而结果以纯文本返回浏览器
PHP 文件的后缀是 ".php"
PHP 能够做什么
PHP 能够生成动态页面内容
PHP 能够创建、打开、读取、写入、删除以及关闭服务器上的文件
PHP 能够接收表单数据
PHP 能够发送并取回 cookies
PHP 能够添加、删除、修改数据库中的数据
PHP 能够限制用户访问网站中的某些页面
PHP 能够对数据进行加密
基础 PHP 语法
PHP 脚本以 <?php 开头,以 ?>
PHP 文件通常包含 HTML 标签以及一些 PHP 脚本代码。
PHP 中的注释
// 这是单行注释
# 这也是单行注释
/*
这是多行注释块,它横跨了多行
*/
PHP 大小写敏感
在 PHP 中,所有用户定义的函数、类和关键词(例如 if、else、echo 等等)都对大小写不敏感
不过在 PHP 中,所有变量都对大小写敏感。函数名不区分大小写
$a=10;
$A=20;
echo $a,$A;
// 变量名区分大小写,函数名不区分大小写
function abc(){
echo "aaa";
}
function Abc(){
echo "bbb";
}
abc();
echo "你好";
PHP内书写汉字,直接打印的是乱码,这时我们要把charset=utf-8"协议加上
直接在PHP内部头部添加:header(“content-type:text/html;charset=utf-8”);
// header() 设置相应消息头,规定返回数据必须这个格式
// 内容类型是文本和html,编码是utf-8
// header("content-type:text/html;charset=utf-8");
变量
变量的定义
变量以 $ 符号开头,其后是变量的名称
变量名称必须以字母或下划线开头
变量名称不能以数字开头
变量名称只能包含字母数字字符和下划线(A-z、0-9 以及 _)
变量名称对大小写敏感($y 与 $Y 是两个不同的变量)
// 变量只能是字母,数组,下划线构成,并且首字母不能数字
$abc=10;
$1ab=10;
$a$=5;
echo $abc;
变量作用域
local(局部)
函数内的变量是局部变量
global(全局)
函数外的变量是全局变量
如果我们想要在函数内调用外面的变量时只需要声明外面的变量为全局的就行如:
// 变量作用域
$a=10;
function abc(){
global $a;//在头部声明global $a,a为全局
$b=50;
$a=20;
echo $b+$a;
echo $b+$GLOBALS["a"];//在打印时声明$GLOBALS["a"],a为全局
echo "<br>";
}
abc();
echo $a;
static(静态)
通常,当函数完成/执行后,会删除所有变量。不过,有时我需要不删除某个局部变量。这时就可以将这个变量设置为静态的。
设置为静态的后,只用在首次运用变量时使用静态变量的数值,当后面再次调用时调用到的是静态变量上次改变的数值
function abc(){
static $a=10;
$a++;
echo $a;
echo "<br>";
}
abc();
abc();
abc();
echo $a;
打印出
11 12 13
变量域的提示
在函数内的变量,如果需要声明或者使用函数外的变量可以使用global
$x=3;
function abc(){
global $x;
$x=6;
echo $x;
}
abc();
echo $x;
$GLOBALS[index] 的数组中存储了所有的全局变量。
$x=3;
function abc(){
$GLOBALS["x"]=6;
echo $GLOBALS["x"];
}
abc();
echo $x;
超全局变量
常用的超全局变量
$_POST
$_POST 广泛用于收集提交 method=“post” 的 HTML 表单后的表单数据。
<html>
<body>
<form method="POST" action="<?php echo $_SERVER['PHP_SELF'];?>">
<!-- 利用$_SERVER获取当前脚本地址 -->
<input type="text" name="user">
<input type="submit" value="处理数据">
</form>
<?php
if($_POST){
$userName = $_POST['user'];
echo $userName;
}
?>
</body>
</html>
$_GET
$_GET 也可用于收集提交 HTML 表单 (method=“get”) 之后的表单数据。
P
O
S
T
和
_POST和
POST和_GET案例:
html部分
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form action="./c.php" method="POST">
<input type="text" name="user"><br>
<input type="password" name="password"></br>
<input type="submit">
</form>
</body>
</html>
php部分
<?php
header("content-type:text/html;charset=utf-8");
// $_GET 获取客户端提交过来表单中的GET数据
// _GET会显示在网站输入框内
echo $_GET["user"];
echo "<br>";
echo $_GET["password"];
// _POST不会会显示在网站输入框内,相比_GET比较隐秘
echo $_POST["user"];
echo "<br>";
echo $_POST["password"];
// 不管是GET还是POST都可以获取
echo $_REQUEST["user"];
echo "<br>";
echo $_REQUEST["password"];
$_SERVER
$_SERVER 这种超全局变量保存关于报头、路径和脚本位置的信息。
$_REQUEST
$_REQUEST 用于收集 HTML 表单提交的数据。
<html>
<body>
<form action="<?php echo $_SERVER['PHP_SELF'];?>">
<!-- 利用$_SERVER获取当前脚本地址 -->
<input type="text" name="user">
<input type="submit" value="处理数据">
</form>
<?php
if($_REQUEST){
$userName = $_REQUEST['user'];
echo $userName;
}
?>
</body>
</html>
$_FILES
$_FILES从客户计算机向远程服务器上传文件。
$_ENV
通过环境方式传递给当前脚本的变量的数组。例如当前计算机名称
$_COOKIE
$_COOKIE 变量用于取回 cookie 的值。
$_SESSION
存储和取回 session 变量的正确方法是使用 PHP $_SESSION 变量
魔术变量
__LINE__
返回当前代码在php中的行数,用于调试php脚本;
__FILE__
返回当前文件的完整路径(绝对路径)
__FUNCTION__
返回当前函数的函数名
__CLASS__
打印输出
返回当前的类名
echo 或 echo()相同
这两个可以直接打印,但是只能打印非引用型对象
$a=5;
$b=6;
$arr=array("a"=>10,"b"=>20);
echo $a+$b;//11;
echo $a.$b;//56;
echo "这些数字是{$arr['b']}";
echo "这些数字是".$arr["b"];
echo "a";
echo("b");
echo "a","b";
$a=10;
$b=20;
echo $a,$b;
print 或 print()相同
print - 只能输出一个字符串,并始终返回 1
$a=5;
$b=6;
$arr=array("a"=>10,"b"=>20);
print $a+$b;//11;
print $a.$b;//56;
print "这些数字是{$arr['b']}";
print "这些数字是".$arr["b"];
print "a";
print("b");
print "a","b"; //错误的,print不能连续打印
// print "a" 打印后会返回一个1
echo print "a";
$a=print "a";
echo "<br>";
echo $a;//这里打印就会打印一个1
echo和print相同,但是也有不同点
echo - 能够输出一个以上的字符串
echo $a,$b;
print - 只能输出一个字符串,并始终返回 1
echo print $a;//51
先打印print $a,再用echo打印print返回的值
print_r($arr);
只能打印数组
var_dump()打印变量的类型和值
$a=5;
$b=6;
$arr=array("a"=>10,"b"=>20);
var_dump($a);
var_dump($arr);
打印数组
可以直接print_r($arr);只能打印数组
$arr=[1,2,3,4,5];
print_r($arr)
还可以先设置再打印
$arr=array("a"=>10,"b"=>20);
var_dump($arr);
条件语句
if 语句 - 如果指定条件为真,则执行代码
if...else 语句 - 如果条件为 true,则执行代码;如果条件为 false,则执行另一端代码
if...elseif....else 语句 - 选择若干段代码块之一来执行
注意elseif没有空格
switch 语句 - 语句多个代码块之一来执行
循环
while - 只要指定条件为真,则循环代码块
do...while - 先执行一次代码块,然后只要指定条件为真则重复循环
for - 循环代码块指定次数
foreach - 遍历数组中的每个元素并循环代码块
数据类型
字符串
字符串可以是引号内的任何文本。您可以使用单引号或双引号
整数
整数必须有至少一个数字(0-9)
整数不能包含逗号或空格
整数不能有小数点
整数正负均可
可以用三种格式规定整数:十进制、十六进制(前缀是 0x)或八进制(前缀是 0)
PHP整数在定义的时候判断了以上这些情况,如果满足就确认为整数型
var_dump($x);
x
=
−
345
;
/
/
负
数
v
a
r
d
u
m
p
(
x = -345; // 负数 var_dump(
x=−345;//负数vardump(x);
x
=
0
x
8
C
;
/
/
十
六
进
制
数
v
a
r
d
u
m
p
(
x = 0x8C; // 十六进制数 var_dump(
x=0x8C;//十六进制数vardump(x);
x
=
047
;
/
/
八
进
制
数
v
a
r
d
u
m
p
(
x = 047; // 八进制数 var_dump(
x=047;//八进制数vardump(x);
浮点数
浮点数是有小数点或指数形式的数字。
逻辑
逻辑是 true 或 false。
数组
数组在一个变量中存储多个值。
数组长度
count()
索引数组 - 带有数字索引的数组
$cars=array("Volvo","BMW","SAAB");
$cars[0]="Volvo";
关联数组 - 带有指定键的数组
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
$age['Peter']="35";
多维数组 - 包含一个或多个数组的数组
$arr=array(array(1,2,3),array(4,5,6));
print_r($arr);
数组的遍历 $arr=array(1,2,3,4,5,6); for($i=0;$i<count($arr);$i++){ echo $arr[$i]."</br>"; } $arr=array(1,2,3,4,5,6); foreach($arr as $value){ echo $value."</br>"; } foreach ($arr as $key=>$item){ echo $key.":".$item; echo "<br>"; }
数组的排序
sort() - 以升序对数组排序
rsort() - 以降序对数组排序
asort() - 根据值,以升序对关联数组进行排序
ksort() - 根据键,以升序对关联数组进行排序
arsort() - 根据值,以降序对关联数组进行排序
krsort() - 根据键,以降序对关联数组进行排序
JSON类型数据
json_encode()
json_decode()
对象
class Ball{
var $r=10;
function Ball($r){
$this->r=$r;
}
function play(){
return $this->r;
}
}
$ball=new Ball(10);
echo $ball->play();
NULL
特殊的 NULL 值表示变量无值。NULL 是数据类型 NULL 唯一可能的值。
NULL 值标示变量是否为空。也用于区分空字符串与空值数据库。
可以通过把值设置为 NULL,将变量清空
gettype()
返回数据的数据类型
判断类型
is_int() 是不是整型;
is_bool()是不是布尔值;
is_string()是不是字符串;
is_array()是不是数组类型;
is_double()是不是浮点数;
随机数
mt_rand(min,max)