PHP入门
What is PHP???
PHP是一种开源的通用计算机脚本语言,尤其适用于网络开发并可嵌入HTML中使用
是一种创建动态交互性站点的强有力的服务器端脚本语言
PHP:
Hypertext Preprocessor
–超文本预处理器DNS
DNS (Domin Name System 域名系统) : 因特网上作为域名和 IP 地址相互映射的一个分布式数据库,能使用户更方便的访问互联网
域名解析
用户通过主机名,最终得到该主机名对应的 IP 地址的过程
步骤:
用户输入域名 localhost –> DNS (localhost 127.0.0.1) –> 服务器电脑
PHP基本语法
php脚本可以放置在文档任意位置
1 |
|
文本输出命令
echo & print
输出字符串可以包含HTML标签
echo 语句
echo - 可以输出一个或多个字符串
echo 输出样式
1 |
|
print 语句
print - 只允许输出一个字符串,返回值为 1
如果字符串成功显示则返回true,否则返回false。
1 |
|
比较
echo 输出速度比 print 快,echo 无返回值, print 返回值为 1
print $a
和print "$a"
效果相同,echo 同理print "text$a text"
和print "text $a text"
和print "text{$a}text"
都可以正常显示 $a 的值,不使用 {} 则 &a 之后必须有一个空格,echo 同理
文本注释
1 |
|
- PHP中每个代码行必须以分号结束,以使指令集区分开来
PHP变量
PHP为一门弱类型语言,不必向 PHP 声明该变量的数据类型。
PHP 会根据变量的值,自动把变量转换为正确的数据类型。
1 |
|
规则
- 变量以 $ 符号开始,后面跟着变量的名称
- 变量名不能包含空格
- 变量名是区分大小写的($y 和 $Y 是两个不同的变量)
PHP变量作用域
PHP 有四种不同的变量作用域:
- local
- global
- static
- parameter
局部与全局作用域
实例:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$x=5; // 全局变量
function myTest()
{
$y=10; // 局部变量
echo "<p>测试函数内变量:<p>";
echo "变量 x 为: $x";
echo "<br>";
echo "变量 y 为: $y";
}
myTest();
echo "<p>测试函数外变量:<p>";
echo "变量 x 为: $x";
echo "<br>";
echo "变量 y 为: $y";
global全局变量
函数内访问全局变量需要 global 关键字或者使用 $GLOBALS[index] 数组
global $x,$y;
1 |
|
在 php 中函数是有独立的作用域,所以局部变量会覆盖全局变量
Static作用域
当一个函数完成时,它的所有变量通常都会被删除。然而,有时候您希望某个局部变量不要被删除
1 | function myTest() |
每次调用该函数时,该变量将会保留着函数前一次被调用时的值,且该变量仍然是函数的局部变量。
参数作用域
参数是通过调用代码将值传递给函数的局部变量,并且在参数列表中声明的:function mytest($x)
PHP 字符串变量
实例: 创建一个 txt 的字符串变量1
2
3
4
$txt="Hello World!";
echo $txt;
PHP 并置运算符 .
在 PHP 中,只有一个字符串运算符。
并置运算符 (.) 用于把两个字符串值连接起来。
实例:1
2
3
4
5
$txt1="Hello";
$txt2="World";
echo $txt1 . " " . $txt2;
字符串函数
strlen("string")
:返回字符串的长度mb_strlen("字符串","utf-8")
: 设置指定编码输出中文字符个数strpos("string","str")
:在字符串内查找一个字符或一段指定的文本的位置,若未找到匹配,则返回 FALSE
PHP超级全局变量
PHP中预定义了几个超级全局变量(superglobals),这意味着它们在一个脚本的全部作用域中都可用。
$GLOBALS
$GLOBALS 是PHP的一个超级全局变量组,在一个PHP脚本的全部作用域中都可以访问。
$GLOBALS 是一个包含了全部变量的全局组合数组。变量的名字就是数组的键
示例:1
2
3
4
5
6
7
8
9
10
11
12
$x = 75;
$y = 25;
function addition()
{
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
addition();
echo $z;
实例中 z 是一个$GLOBALS数组中的超级全局变量,该变量同样可以在函数外访问
$_SERVER
$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。
示例:1
2
3
4
5
6
7
8
9
10
11
12
13
echo $_SERVER['PHP_SELF'];
echo "<br>";
echo $_SERVER['SERVER_NAME'];
echo "<br>";
echo $_SERVER['HTTP_HOST'];
echo "<br>";
echo $_SERVER['HTTP_REFERER'];
echo "<br>";
echo $_SERVER['HTTP_USER_AGENT'];
echo "<br>";
echo $_SERVER['SCRIPT_NAME'];
这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目;服务器可能会忽略一些
$_REQUEST
PHP $_REQUEST 用于收集HTML表单提交的数据。
示例: 用超级全局变量 $_REQUEST 来收集表单中的 input 字段数据1
2
3
4
5
6
7
8
9
10
11
12
13
14
15<html>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>
$name = $_REQUEST['fname'];
echo $name;
</body>
</html>
$_POST有类似的用法
PHP 常量
常量是一个简单值得标识符,不可以在脚本中改变
设置PHP常量
语法
bool define ( string $name , mixed $value [, bool $case_insentitive = false ])
解释
name
:必选参数,常量名称,即标志符value
:必选参数,常量的值case_insensitive
:可选参数,如果设置为TRUE,该常量则大小写不敏感。默认是大小写敏感的
示例:1
2
3
4
5
//不区分大小写的常量
define("Hello", "Keithxodoy", True);
echo Hello;
- 常量在定义后,默认是全局变量,可在任意脚本中使用
PHP EOF (heredoc)
PHP EOF(heredoc)是一种在命令行shell(如sh、csh、ksh、bash、PowerShell和zsh)和程序语言(像Perl、PHP、Python和Ruby)里定义一个字串的方法。
PHP 定界符 EOF 的作用就是按照原样,包括换行格式什么的,输出在其内部的东西
1 |
|
1. 以 <<<EOF 开始标记开始,以 EOF 结束标记结束,结束标记必须顶头写,不能有缩进和空格,且在结束标记末尾要有分号
2. EOF 可以用任意其它字符代替,只需保证结束标识与开始标识一致。
3. 结束标识必须顶格独自占一行(即必须从行首开始,前后不能衔接任何空白和字符)。
4. 当内容需要内嵌引号(单引号或双引号)时,不需要加转义符,本身对单双引号转义。
5. 在 heredoc 中,变量不需要用连接符 . 或 , 来拼接
补充:PHP_EOL 是一个换行符,兼容更大平台
PHP 数据类型
String Integer Float Boolean Array Object Null
示例1
2
3
4
5
6
7
8
9
10
11
12
13
14
$x = "Hello ,world!";
$y = 520;
$z = 52.1;
$a = True;
$arr = array("1","2","3");
class obj
{
var $color;
function what_color() {
return $this->color;
}
}
$b = null;
拓展
判断变量类型:var_dump()
说明:var_dump() 方法,判断一个变量的类型与长度,并输出变量的数值,如果变量有值,则输出是变量的值,并返回数据类型。显示关于一个或多个表达式的结构信息,包括表达式的类型与值.
注意:用保证 var_dump 中的变量必须是存在的,如果变量不存在则返回 NULL.
PHP 运算符
以例子来理解
1 |
|
php7+ 新增整除运算符
示例:1
2
3
var_dump(intdiv(10, 3));
赋值运算符与算法运算符用法相同
- PHP 递增/递减运算符
运算符 | 名称 | 描述 |
---|---|---|
++$x | 预递增 | x 加 1,然后返回 x |
$x++ | 后递增 | 返回 x,然后 x 加 1 |
- PHP 比较运算符
运算符 | 名称 | 描述 | 实例 |
---|---|---|---|
x <> y | 不等于 | 如果 x 不等于 y,则返回 true | 5<>8 返回 true |
x !== y | 绝对不等于 | 如果 x 不等于 y,或它们类型不相同,则返回 true | 5!==”5” 返回 true |
x === y | 绝对等于 | 如果 x 等于 y,且它们类型相同,则返回 true | 5===”5” 返回 false |
- PHP 逻辑运算符
运算符 | 名称 | 描述 | ||
---|---|---|---|---|
x and y |
与 | 如果 x 和 y 都为 true,则返回 true | ||
x or y |
或 | 如果 x 和 y 至少有一个为 true,则返回 true | ||
x xor y |
异或 | 如果 x 和 y 有且仅有一个为 true,则返回 true | ||
x && y |
与 | 如果 x 和 y 都为 true,则返回 true | ||
`x | y` | 或 | 如果 x 和 y 至少有一个为 true,则返回 true | |
! x |
非 | 如果x 不为 true,则返回 true |
- 三元运算符
语法格式
(expr1) ? (expr2) : (expr3)
对 expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值为 expr3。
(exp1)?: (expr3)
自 PHP 5.3 起,可以省略三元运算符中间那部分。表达式 expr1 ?: expr3 在 expr1 求值为 TRUE 时返回 expr1,否则返回 expr3。
示例:1
2
3
4
5
$test = "一段字符";
$username = $test ?: 'nobody';
echo $username, PHP_EOL;
==> 一段字符
- 组合比较符(PHP7+)
PHP7+ 支持组合比较符
示例:比价两个整型数的大小1
2
3
4
5
echo 1 <==> 1; // 0
echo 1 <==> 2; // -1
echo 2 <==> 1; // 1
- 运算优先级
优先级 | && > = > and |
` | > = > or` | 括号优先运算 | |
---|---|---|---|---|---|
PHP 条件语句
PHp - if 语句
if 语句仅当指定条件成立时执行代码
示例:1
2
3
4if (condition)
{
// 条件成立时执行代码块;
}
PHP - if…else 语句
在条件成立时执行一块代码,条件不成立时执行另一块代码
1 | if (条件) |
PHP - if…elseif….else 语句
在若干条件之一成立时执行一个代码块
示例:1
2
3
4
5
6
7
8
9
10
11
12if (条件)
{
//if 条件成立时执行的代码;
}
elseif (条件)
{
// elseif 条件成立时执行的代码;
}
else
{
//条件不成立时执行的代码;
}
注意: elseif 和 else if 完全同效果,elseif 是 PHP 为 else if 专门做到容错版
PHP Switch 语句
如果希望有选择地执行若干代码块之一,可以使用 switch 语句
示例:判断n的值1
2
3
4
5
6
7
8
9
10
11
12
13
14
switch (n)
{
case num1:
# code...
break;
case num2:
# code...
break;
default:
# code
// 如果 n 即不等于 num1 也不等于 num2 ,此处代码将会被执行;
}
解释:。代码执行后,使用 break 来阻止代码跳入下一个 case 中继续执行。default 语句用于不存在匹配(即没有 case 为真)时执行
PHP 循环
while循环
1 | while (条件) |
do…while 语句
do…while 语句会至少执行一次代码,然后检查条件,只要条件成立,就会重复进行循环。
语法:1
2
3
4
5do
{
要执行的代码;
}
while (条件);
for 循环
for 循环用于您预先知道脚本需要运行的次数的情况。
语法:1
2
3
4for (初始值; 条件; 增量)
{
要执行的代码;
}
foreach 循环
foreach 循环用于遍历数组。
语法:1
2
3
4foreach ($array as $value)
{
要执行代码;
}
实例: 输出x数组内的元素1
2
3
4
5
6
7
$x=array("one","two","three");
foreach ($x as $value)
{
echo $value . "<br>";
}
PHP数组
语法:$arr=array();
在 PHP 中,有三种类型的数组:
- 数值数组 - 带有数字 ID 键的数组,自动分配 ID 键(ID 键总是从 0 开始
- 关联数组 - 带有指定的键的数组,每个键关联一个值
- 多维数组 - 包含一个或多个数组的数组
数值数组实例
1 |
|
获取数组的长度 - count() 函数
1 | for($x=0;$x<$count(&cars);$x++) |
PHP关联数组
语法:
&age=array("TOM"=>"25","KIT"=>"21");
$age['TOM']="25"; $age['KIT']="21";
遍历关联数组
1 |
|
PHP多维数组
多维数组是包含一个或多个数组的数组。
实例: 二维数组:1
2
3
4
5
6
7
8
9
$cars = array
(
array("Volvo",100,96),
array("BMW",60,59),
array("Toyota",110,100)
);
PHP print_r() 函数
print_r() 函数用于打印变量,以更容易理解的形式展示。
print_r() 将把数组的指针移到最后边。使用 reset() 可让指针回到开始处。
PHP 版本要求: PHP 4, PHP 5, PHP 7
实例:1
2
3
4
$a = array ('a' => 'apple', 'b' => 'banana', 'c' => array ('x','y','z'));
print_r ($a);
输出结果为:1
2
3
4
5
6
7
8
9
10
11
12Array
(
[a] => apple
[b] => banana
[c] => Array
(
[0] => x
[1] => y
[2] => z
)
)
PHP数组排序
概述
PHP - 数组排序函数
sort()
- 对数组进行升序排列rsort()
- 对数组进行降序排列asort()
- 根据关联数组的值,对数组进行升序排列ksort()
- 根据关联数组的键,对数组进行升序排列arsort()
- 根据关联数组的值,对数组进行降序排列krsort()
- 根据关联数组的键,对数组进行降序排列
示例
1 |
|
运行结果1
2
3
4
5
6
7
8Array
(
[0] => 2
[1] => 4
[2] => 6
[3] => 11
[4] => 22
)
PHP 函数
在PHP中,提供了超过1000哥内建函数,这才是PHP真正强大的来源
创建函数
函数通过调用函数来执行
1 |
|
PHP 函数准则:
- 函数的名称应该提示出它的功能
- 函数名称以字母或下划线开头(不能以数字开头)
函数参数
在函数名后的括号内添加参数,而且一个函数可以有多个参数
示例:1
2
3
4
5
6
7
function name($name)
{
echo "myname is" . $name;
}
name("keith");
输出:myname is keith
函数返回值
如果让函数返回一个值,使用return
语句
1 |
|
PHP 常见的疑问
双引号与单引号
- 双引号
PHP允许我们在双引号串中直接包含字串变量,我们可以发现下面的两个字串的处理结果是相同的。
代码如下:1
2$full_name = $first_name . ' ' . $last_name;
$full_name = "$first_name $last_name";
- 单引号
单引号里是普通字符是啥就是啥