# PHP学习(一) 基础语法
# 什么是PHP
PHP(外文名:PHP:Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开元脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,实用广泛,主要适用于Web开发领域。PHP独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速的执行动态网页。用PHP做出的动态页面与 其他编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
世界上最美的语言!
# PHP语法
# 基础语法
PHP 脚本可放置于文档中的任何位置。
PHP 脚本以 <?php 开头,以 ?> 结尾:
<?php
echo "Hello World!";
?>
2
3
PHP 文件的默认文件扩展名是 ".php"。
PHP 文件通常包含 HTML 标签以及一些 PHP 脚本代码。
注意!!!PHP 语句以分号结尾(;)。PHP 代码块的关闭标签也会自动表明分号(因此在 PHP 代码块的最后一行不必使用分号)。
# 变量声明
<?php
$x=5;
$y=6;
$z=$x+$y;
echo $z;
?>
2
3
4
5
6
PHP 变量规则:
- 变量以 $ 符号开头,其后是变量的名称
- 变量名称必须以字母或下划线开头
- 变量名称不能以数字开头
- 变量名称只能包含字母数字字符和下划线(A-z、0-9 以及 _)
- 变量名称对大小写敏感($y 与 $Y 是两个不同的变量) 注释:PHP 变量名称对大小写敏感!
# PHP 变量作用域
PHP 有三种不同的变量作用域:
- local(局部)
- global(全局)
- static(静态)
函数之外声明的变量拥有 Global 作用域,只能在函数以外进行访问。
函数内部声明的变量拥有 LOCAL 作用域,只能在函数内部进行访问。
global 关键词用于在函数内访问全局变量。
<?php
$x=5;
$y=10;
function myTest() {
global $x,$y;
$y=$x+$y;
}
myTest();
echo $y; // 输出 15
?>
2
3
4
5
6
7
8
9
10
11
12
PHP 同时在名为 $GLOBALS[index] 的数组中存储了所有的全局变量。下标存有变量名。这个数组在函数内也可以访问,并能够用于直接更新全局变量。
<?php
$x=5;
$y=10;
function myTest() {
$GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];
}
myTest();
echo $y; // 输出 15
?>
2
3
4
5
6
7
8
9
10
11
通常,当函数完成/执行后,会删除所有变量。不过,有时我需要不删除某个局部变量。实现这一点需要使用static。
<?php
function myTest() {
static $x=0;
echo $x;
$x++;
}
myTest(); // 0
myTest(); // 1
myTest(); // 2
?>
2
3
4
5
6
7
8
9
10
11
12
13
然后,每当函数被调用时,这个变量所存储的信息都是函数最后一次被调用时所包含的信息。
注释:该变量仍然是函数的局部变量。
# isset方法
isset方法可以判断PHP变量有没有被声明
if(isset($aa)){
echo $aa;
} else {
echo "aa变量没有被声明"; //输出
}
2
3
4
5
# 引用外部文件
通过 include 或 require 语句,可以将 PHP 文件的内容插入另一个 PHP 文件(在服务器执行它之前)。
include 和 require 语句是相同的,除了错误处理方面:
- require 会生成致命错误(E_COMPILE_ERROR)并停止脚本
- include 只生成警告(E_WARNING),并且脚本会继续
假设我们有一个名为 "footer.php" 的标准的页脚文件,就像这样:
<?php
echo "<p>Copyright © 2006-" . date("Y") . " W3School.com.cn</p>";
?>
2
3
如需在一张页面中引用这个页脚文件,请使用 include 语句:
<html>
<body>
<h1>欢迎访问我们的首页!</h1>
<p>一段文本。</p>
<p>一段文本。</p>
<?php include 'footer.php';?>
</body>
</html>
2
3
4
5
6
7
8
9
10
# 数组
在 PHP 中,有三种数组类型:
- 索引数组 - 带有数字索引的数组
- 关联数组 - 带有指定键的数组
- 多维数组 - 包含一个或多个数组的数组
索引数组
$cars=array("porsche","BMW","Volvo");
或者也可以手动分配索引:
$cars[0]="porsche";
$cars[1]="BMW";
$cars[2]="Volvo";
2
3
count() 函数用于返回数组的长度(元素数):
<?php
$cars=array("porsche","BMW","Volvo");
echo count($cars); // 3
?>
2
3
4
关联数组
$age=array("Bill"=>"35","Steve"=>"37","Elon"=>"43");
或者
$age['Bill']="63";
$age['Steve']="56";
$age['Elon']="47";
2
3
# json_encode方法
json_encode方法输出json格式的数据,例如
$arrayTest = array(0=> "苹果", 1=>"测试"); // 数组的定义方法
echo json_encode($arrayTest); // json_encode输出json格式
2
# PHP Session
PHP session 变量用于存储有关用户会话的信息,或更改用户会话的设置。Session 变量保存的信息是单一用户的,并且可供应用程序中的所有页面使用。
Session 的工作机制是:为每个访问者创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在 cookie 中,亦或通过 URL 进行传导。
开始 PHP Session
在把用户信息存储到 PHP session 中之前,首先必须启动会话。
注释:session_start() 函数必须位于 html 标签之前:
<?php session_start(); ?>
<html>
<body>
</body>
</html>
2
3
4
5
6
7
存储 Session 变量
存储和取回 session 变量的正确方法是使用 PHP $_SESSION 变量:
<?php
session_start();
// store session data
$_SESSION['views']=1;
?>
<html>
<body>
<?php
//retrieve session data
echo "Pageviews=". $_SESSION['views']; // 1
?>
</body>
</html>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
终结 Session
如果希望删除某些 session 数据,可以使用 unset() 或 session_destroy() 函数。
unset() 函数用于释放指定的 session 变量:
<?php
unset($_SESSION['views']);
?>
2
3
也可以通过 session_destroy() 函数彻底终结 session:
<?php
session_destroy();
?>
2
3
# 处理请求
表单提交数据请求 index.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>form</title>
</head>
<body>
<form action="a.php" method="get">
<label>用户</label>
<input type="text" name="username">
<p>
<label>密码</label>
<input type="password" name="password">
</p>
<input type="submit" value="提交">
</form>
</body>
</html>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
a.php
<?php
header("Content-type: text/html; charset=utf-8");
if ($_REQUEST['username'] == "admin") {
echo json_encode(array("msg"=>"登陆成功", "errorCode" => "ok"));
} else{
echo json_encode(array("msg"=>"登录失败", "errorCode" => "no"));
}
?>
2
3
4
5
6
7
8
使用ajax请求 index.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<script type="text/javascript" src="https://code.jquery.com/jquery-2.2.4.min.js"
integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44="
crossorigin="anonymous"></script>
<body>
<form action="a.php" method="get">
<label>用户</label>
<input type="text" name="username" id="username">
<p>
<label>密码</label>
<input type="password" name="password">
</p>
<input type="submit" value="提交" id="btn">
</form>
</body>
<script type="text/javascript">
$('#btn').click(function(e){
e.preventDefault();
$.ajax({
url:'a.php',
data:{
username:$('#username').val()
},
dataType:'json',
type:'get',
success:function(data){
alert(data.msg);
}
})
})
</script>
</html>
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
36
37
38
39
a.php
<?php
header("Content-type: text/html; charset=utf-8");
if ($_REQUEST['username'] == "admin") {
echo json_encode(array("msg"=>"登陆成功", "errorCode" => "ok"));
} else{
echo json_encode(array("msg"=>"登录失败", "errorCode" => "no"));
}
?>
2
3
4
5
6
7
8
通过$_GET[]方法获取GET请求参数
通过$_POST[]方法获取POST请求参数
通过$_REQUEST[]方法可以获取GET和POST的请求参数
设置header头
header("Content-type: text/json;charset = utf-8");