下载
下载的编译器 VS Code:Visual Studio Code - Code Editing. Redefined
下载PHPsutdy:Windows版phpstudy下载 - 小皮面板(phpstudy)
了解PHP是什么
全称:Hypertext Preprocessor 即 “超文本预处理器"
PHP是一种通用开源脚本语言并且在服务器上执行;对初学者相对来说较为简单,同样的对于专业的程序员提供了许多先进的功能。
使用PHP的原因和PHP的作用及文件
- 原因
- PHP 可在不同的平台上运行(Windows、Linux、Unix、Mac OS X 等)
- PHP 与目前几乎所有的正在被使用的服务器相兼容(Apache、IIS 等)
- PHP 提供了广泛的数据库支持
- PHP 易于学习,并可高效地运行在服务器端
- 作用
- PHP 可以生成动态页面内容
- PHP 可以创建、打开、读取、写入、关闭服务器上的文件
- PHP 可以收集表单数据
- PHP 可以发送和接收 cookies
- PHP 可以添加、删除、修改您的数据库中的数据
- PHP 可以限制用户访问您的网站上的一些页面
- PHP 可以加密数据
- 文件
- PHP 文件可包含文本、HTML、JavaScript代码和 PHP 代码
- PHP 代码在服务器上执行,结果以纯 HTML 形式返回给浏览器
- PHP 文件的默认文件扩展名是 ".php"
- PHP文件通常包含 HTML 标签和一些 PHP 脚本代码。
- PHP 脚本可以放在文档中的任何位置
PHP的基本语法
PHP 脚本以 <?php 开始,以 ?> 结束:
<?php
// PHP 代码
?>
<?php
echo "Hello World!";
?>
PHP中的注释
<?php
// 这是 PHP 单行注释
/*
这是
PHP 多行
注释
*/
?>
PHP 中的每个代码行都必须以分号结束。分号是一种分隔符,用于把指令集区分开来。
通过 PHP,有两种在浏览器输出文本的基础指令:echo 和 print
PHP变量
变量是用于存储信息的"容器"
<?php
// PHP 代码
?>
<?php
echo "Hello World!";
?>
与代数类似,在PHP中这些字母被称为变量
变量可以是很短的名称(如 x 和 y)或者更具描述性的名称(如 age、carname、totalvolume)
PHP 变量规则:
- 变量以 $ 符号开始,后面跟着变量的名称
- 变量名必须以字母或者下划线字符开始
- 变量名只能包含字母、数字以及下划线(A-z、0-9 和 _ )
- 变量名不能包含空格
- 变量名是区分大小写的($y 和 $Y 是两个不同的变量)
- PHP 语句和 PHP 变量都是区分大小写的。
注释:当赋一个文本值给变量时,请在文本值两侧加上引号。
PHP 有四种不同的变量作用域:
- local
- global
- static
- parameter
局部变量和全局变量
在所有函数外部定义的变量,拥有全局作用域。除了函数外,全局变量可以被脚本中的任何部分访问,要在一个函数中访问一个全局变量,需要使用 global 关键字。
在 PHP 函数内部声明的变量是局部变量,仅能在函数内部访问
你可以在不同函数中使用相同的变量名称,因为这些函数内定义的变量名是局部变量,只作用于该函数内。
global关键字
global关键字用于函数内访问全局变量
例子:
<?php
$x=5;
$y=10;
function myTest()
{
global$X,$Yy;
$y=$X+$Y;
}
myTest()
echo $y;//输出15
?>
PHP将所有全局变量存储在一个名为GLOBALS[index]的数组中。index保存变量的名称。这个数组可以在函数内部访问。也可以直接用来更新全局变量。
上面实例的另一种写法:
<?php
$x=5;
$y=10;
function myTest()
{
$GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];
}
myTest();
echo $y;
?>
Static 作用域
当一个函数完成时,它的所有变量通常都会被删除。然而,有时候您希望某个局部变量不要被删除。
要做到这一点,请在您第一次声明变量时使用 static 关键字:
实例
<?php
function myTest()
{
static $x=0;
echo $x;
$x++;
echo PHP_EOL;
}
myTest();
myTest();
myTest();
?>
注释:该变量仍然是函数的局部变量。
PHP echo和print语句
echo和print的区别
echo- 可以输出一个或者多个字符节.
print-只允许输出一个字符串,返回值为1.
提示:echo 输出的速度比 print 快, echo 没有返回值,print有返回值1。
PHP echo 语句
echo是一个语言结构,使用的时候不用加括号,也可以加上括号:echo或echo()
显示字符串
实例:(字符串可以包含 HTML 标签)
<?php
echo "<h2>PHP 很有趣!</h2>";
echo "Hello world!<br>";/*<br>为换行符*/
echo "我要学 PHP!<br>";
echo "这是一个", "字符串,", "使用了", "多个", "参数。";
?>
<?php
$txt1="学习 PHP";
$txt2="RUNOOB.COM";
$cars=array("Volvo","BMW","Toyota");
echo $txt1;
echo "<br>";
echo "在 $txt2 学习 PHP ";
echo "<br>";
echo "我车的品牌是 {$cars[0]}";
?>
PHP print 语句
print和echo一样,把上面的echo换成print就行
PHP EOF(heredoc) 使用说明
PHP EOF(heredoc)是一种在命令行shell(如sh、csh、ksh、bash、PowerShell和zsh)和程序语言(像Perl、PHP、Python和Ruby)里定义一个字符串的方法。
使用概述:
1.必须后接分号,否则编译通不过。
2.EOF 可以用任意其它字符代替,只需保证结束标识与开始标识一致。
3.结束标识必须顶格独自占一行(即必须从行首开始,前后不能衔接任何空白和字符)。
4.开始标识可以不带引号或带单双引号,不带引号与带双引号效果一致,解释内嵌的变量和转义符号,带单引号则不解释内嵌的变量和转义符号。
5.当内容需要内嵌引号(单引号或双引号)时,不需要加转义符,本身对单双引号转义,此处相当与q和qq的用法。
<?php
echo <<<EOF
<h1>我的第一个标题</h1>
<p>我的第一个段落。</p>
EOF;
// 结束需要独立一行且前后不能空格
?>
注意:
1.以 <<<EOF 开始标记开始,以 EOF 结束标记结束,结束标记必须顶头写,不能有缩进和空格,且在结束标记末尾要有分号 。
2.开始标记和结束标记相同,比如常用大写的 EOT、EOD、EOF 来表示,但是不只限于那几个(也可以用:JSON、HTML等),只要保证开始标记和结束标记不在正文中出现即可。
3.位于开始标记和结束标记之间的变量可以被正常解析,但是函数则不可以。在 heredoc 中,变量不需要用连接符 . 或 , 来拼接,如下:
<?php
$name="runoob";
$a= <<<EOF
"abc"$name
"123"
EOF;
// 结束需要独立一行且前后不能空格
echo $a;
?>
1.PHP 定界符 EOF 的作用就是按照原样,包括换行格式什么的,输出在其内部的东西;.
2.在 PHP 定界符 EOF 中的任何特殊字符都不需要转义;.
3.PHP 定界符 EOF
PHP数据类型
String(字符串) Integer(整型) Float(浮点型) Boolean(布尔型) Array(数组) Object(对象) Null(空值)
整型:是一个没有小数的数字。
整型规则: 整数必须有一个数字(0-9);整数不能包含空格或者逗号;整数没有小数点;整数可以为正也可以为负;整型可以用三种形式指定:十进制、十六进制(前缀0x)、八进制(前缀0)
浮点型:是带小数部分的数字,或是指数形式。
布尔型:是 TRUE 或 FALSE。通常用于条件判断。
数组:在一个变量中存储多个值。
对象数据类型:可以用于存储数据,对象必须声明。
空值:NULL 值表示变量没有值。NULL 是数据类型为 NULL 的值。
NULL 值指明一个变量是否为空值。 同样可用于数据空值和NULL值的区别。
PHP类型比较
松散比较:使用两个等号==比较,只比较值,不比较类型。
严格比较:使用三个等号===比较,既比较值又比较类型。
PHP 常量
常量是一个简单值的标识符。该值在脚本中不能改变。
一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符)。
ture可以在设置常量时大小写不敏感。define函数用来设置常量。
常量在定义后,默认是全局变量,可以在整个运行的脚本的任何地方使用。
PHP 字符串变量
字符串变量用于存储并处理文本;字符串变量用于包含有字符的值。
在创建字符串之后,我们就可以对它进行操作了。您可以直接在函数中使用字符串,或者把它存储在变量中。
注释:当您赋一个文本值给变量时,请记得给文本值加上单引号或者双引号
<?php
$txt="Hello world!";
echo $txt;
?>
并置运算符
在 PHP 中,只有一个字符串运算符。并置运算符 (.) 用于把两个字符串值连接起来。
<?php
$txt1="Hello world!";
$txt2="What a nice day!";
echo $txt1 . " " . $txt2;
?>
strlen() 函数
strlen() 函数返回字符串的长度(字节数)。
strlen() 常常用在循环和其他函数中,因为那时确定字符串何时结束是很重要的。(例如,在循环中,我们需要在字符串中的最后一个字符之后结束循环。)
strpos() 函数
strpos() 函数用于在字符串内查找一个字符或一段指定的文本。如果在字符串中找到匹配,该函数会返回第一个匹配的字符位置。如果未找到匹配,则返回 FALSE。
字符串中第一个字符的位置是 0,而不是 1
PHP 运算符
赋值运算符 = 用于给变量赋值。
算术运算符 + 用于把值加在一起。
PHP 递增/递减运算符
运算符 | 名称 | 描述 |
---|---|---|
++ x | 预递增 | x 加 1,然后返回 x |
x ++ | 后递增 | 返回 x,然后 x 加 1 |
-- x | 预递减 | x 减 1,然后返回 x |
x -- | 后递减 | 返回 x,然后 x 减 1 |
PHP 比较运算符
运算符 | 名称 | 描述 | 实例 |
---|---|---|---|
x == y | 等于 | 如果 x 等于 y,则返回 true | 5==8 返回 false |
x === y | 绝对等于 | 如果 x 等于 y,且它们类型相同,则返回 true | 5==="5" 返回 false |
x != y | 不等于 | 如果 x 不等于 y,则返回 true | 5!=8 返回 true |
x <> y | 不等于 | 如果 x 不等于 y,则返回 true | 5<>8 返回 true |
x !== y | 绝对不等于 | 如果 x 不等于 y,或它们类型不相同,则返回 true | 5!=="5" 返回 true |
x > y | 大于 | 如果 x 大于 y,则返回 true | 5>8 返回 false |
x < y | 小于 | 如果 x 小于 y,则返回 true | 5<8 返回 true |
x >= y | 大于等于 | 如果 x 大于或者等于 y,则返回 true | 5>=8 返回 false |
x <= y | 小于等于 | 如果 x 小于或者等于 y,则返回 true | 5<=8 返回 true |
PHP 逻辑运算符
运算符 | 名称 | 描述 | 实例 |
---|---|---|---|
x and y | 与 | 如果 x 和 y 都为 true,则返回 true | x=6 y=3 (x < 10 and y > 1) 返回 true |
x or y | 或 | 如果 x 和 y 至少有一个为 true,则返回 true | x=6 y=3 (x==6 or y==5) 返回 true |
x xor y | 异或 | 如果 x 和 y 有且仅有一个为 true,则返回 true | x=6 y=3 (x==6 xor y==3) 返回 false |
x && y | 与 | 如果 x 和 y 都为 true,则返回 true | x=6 y=3 (x < 10 && y > 1) 返回 true |
x || y | 或 | 如果 x 和 y 至少有一个为 true,则返回 true | x=6 y=3 (x==5 || y==5) 返回 false |
! x | 非 | 如果 x 不为 true,则返回 true | x=6 y=3 !(x==y) 返回 true |
三元运算符
语法格式
(expr1) ? (expr2) : (expr3)
对 expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值为 expr3。
<?php
$test = '菜鸟教程';
$username = isset($test) ? $test : 'nobody';
echo $username, PHP_EOL;
运算符优先级
下表按照优先级从高到低列出了运算符。同一行中的运算符具有相同优先级,此时它们的结合方向决定求值顺序。
说明:左 = 从左到右,右 = 从右到左。
结合方向 | 运算符 | 附加信息 |
---|---|---|
无 | clone new | clone 和 new |
左 | [ | array() |
右 | ++ -- ~ (int) (float) (string) (array) (object) (bool) @ | 类型和递增/递减 |
无 | instanceof | 类型 |
右 | ! | 逻辑运算符 |
左 | * / % | 算术运算符 |
左 | + – . | 算术运算符和字符串运算符 |
左 | << >> | 位运算符 |
无 | == != === !== <> | 比较运算符 |
左 | & | 位运算符和引用 |
左 | ^ | 位运算符 |
左 | | | 位运算符 |
左 | && | 逻辑运算符 |
左 | || | 逻辑运算符 |
左 | ? : | 三元运算符 |
右 | = += -= *= /= .= %= &= |= ^= <<= >>= => | 赋值运算符 |
左 | and | 逻辑运算符 |
左 | xor | 逻辑运算符 |
左 | or | 逻辑运算符 |
左 | , | 多处用到 |
运算符优先级中,or 和 ||,&& 和 and 都是逻辑运算符,效果一样,但是其优先级却不一样。
括号优先运算
PHP If...Else 语句
if 语句 - 在条件成立时执行代码
if...else 语句 - 在条件成立时执行一块代码,条件不成立时执行另一块代码
if...elseif....else 语句 - 在若干条件之一成立时执行一个代码块
switch 语句 - 在若干条件之一成立时执行一个代码块
if...elseif....else 语句
<?php
$t=date("H");
if ($t<"10")
{
echo "Have a good morning!";
}
elseif ($t<"20")
{
echo "Have a good day!";
}
else
{
echo "Have a good night!";
}
?>
数组
数组是一个能在单个变量存储多个值的特殊变量。
array()函数用于创建数组, array();
数组类型:
数值数组:带有数字ID键的数组。
关联数组:带有指定的键的数组,每个键关联一个值。
多维数组:包含一个或者多个数组的值。
两种方法:1,自动分配ID键(从0开始) 例子:$cars =array("Volvo","BMW","Toyota");
2,人工分配ID 例子: $cars[0]="Volvo";
$cars[1]="BMW";
$cars[2]="Toyota";
count()函数用于返回数组元素的数量。
例子
<?php
$cars=array("Vovor","BMW","Toyota");
echo count($cars);
?>
数组排序
数组中的元素可以按字母或数字顺序进行降序或升序排列。
- sort() - 对数组进行升序排列
- rsort() - 对数组进行降序排列
- asort() - 根据关联数组的值,对数组进行升序排列
- ksort() - 根据关联数组的键,对数组进行升序排列
- arsort() - 根据关联数组的值,对数组进行降序排列
- krsort() - 根据关联数组的键,对数组进行降序排列
PHP 超级全局变量
在一个脚本的全部作用域都可用。
列表:$GLOBALS $_SERVER $_REQUEST $_POST $_GET
$_FILES $_ENV $_COOKIE $_SESSION
$_SERVER 的解析
元素/代码 | 描述 |
---|---|
$_SERVER['PHP_SELF'] | 当前执行脚本的文件名,与 document root 有关。例如,在地址为 http://example.com/test.php/foo.bar 的脚本中使用 $_SERVER['PHP_SELF'] 将得到 /test.php/foo.bar。__FILE__ 常量包含当前(例如包含)文件的完整路径和文件名。 从 PHP 4.3.0 版本开始,如果 PHP 以命令行模式运行,这个变量将包含脚本名。之前的版本该变量不可用。 |
$_SERVER['GATEWAY_INTERFACE'] | 服务器使用的 CGI 规范的版本;例如,"CGI/1.1"。 |
$_SERVER['SERVER_ADDR'] | 当前运行脚本所在的服务器的 IP 地址。 |
$_SERVER['SERVER_NAME'] | 当前运行脚本所在的服务器的主机名。如果脚本运行于虚拟主机中,该名称是由那个虚拟主机所设置的值决定。(如: www.runoob.com) |
$_SERVER['SERVER_SOFTWARE'] | 服务器标识字符串,在响应请求时的头信息中给出。 (如:Apache/2.2.24) |
$_SERVER['SERVER_PROTOCOL'] | 请求页面时通信协议的名称和版本。例如,"HTTP/1.0"。 |
$_SERVER['REQUEST_METHOD'] | 访问页面使用的请求方法;例如,"GET", "HEAD","POST","PUT"。 |
$_SERVER['REQUEST_TIME'] | 请求开始时的时间戳。从 PHP 5.1.0 起可用。 (如:1377687496) |
$_SERVER['QUERY_STRING'] | query string(查询字符串),如果有的话,通过它进行页面访问。 |
$_SERVER['HTTP_ACCEPT'] | 当前请求头中 Accept: 项的内容,如果存在的话。 |
$_SERVER['HTTP_ACCEPT_CHARSET'] | 当前请求头中 Accept-Charset: 项的内容,如果存在的话。例如:"iso-8859-1,*,utf-8"。 |
$_SERVER['HTTP_HOST'] | 当前请求头中 Host: 项的内容,如果存在的话。 |
$_SERVER['HTTP_REFERER'] | 引导用户代理到当前页的前一页的地址(如果存在)。由 user agent 设置决定。并不是所有的用户代理都会设置该项,有的还提供了修改 HTTP_REFERER 的功能。简言之,该值并不可信。) |
$_SERVER['HTTPS'] | 如果脚本是通过 HTTPS 协议被访问,则被设为一个非空的值。 |
$_SERVER['REMOTE_ADDR'] | 浏览当前页面的用户的 IP 地址。 |
$_SERVER['REMOTE_HOST'] | 浏览当前页面的用户的主机名。DNS 反向解析不依赖于用户的 REMOTE_ADDR。 |
$_SERVER['REMOTE_PORT'] | 用户机器上连接到 Web 服务器所使用的端口号。 |
$_SERVER['SCRIPT_FILENAME'] | 当前执行脚本的绝对路径。 |
$_SERVER['SERVER_ADMIN'] | 该值指明了 Apache 服务器配置文件中的 SERVER_ADMIN 参数。如果脚本运行在一个虚拟主机上,则该值是那个虚拟主机的值。(如:someone@runoob.com) |
$_SERVER['SERVER_PORT'] | Web 服务器使用的端口。默认值为 "80"。如果使用 SSL 安全连接,则这个值为用户设置的 HTTP 端口。 |
$_SERVER['SERVER_SIGNATURE'] | 包含了服务器版本和虚拟主机名的字符串。 |
$_SERVER['PATH_TRANSLATED'] | 当前脚本所在文件系统(非文档根目录)的基本路径。这是在服务器进行虚拟到真实路径的映像后的结果。 |
$_SERVER['SCRIPT_NAME'] | 包含当前脚本的路径。这在页面需要指向自己时非常有用。__FILE__ 常量包含当前脚本(例如包含文件)的完整路径和文件名。 |
$_SERVER['SCRIPT_URI'] | URI 用来指定要访问的页面。例如 "/index.html"。 |
$_REQUEST $_POST 都用于收集表单数据
循环执行代码块指定的次数,或者当指定的条件为真时循环执行代码块。
while循环
while 循环将重复执行代码块,直到指定的条件不成立。
do...while 语句
do...while 语句会至少执行一次代码,然后检查条件,只要条件成立,就会重复进行循环。
for 循环
for 循环用于您预先知道脚本需要运行的次数的情况。
参数:
- 初始值:主要是初始化一个变量值,用于设置一个计数器(但可以是任何在循环的开始被执行一次的代码)。
- 条件:循环执行的限制条件。如果为 TRUE,则循环继续。如果为 FALSE,则循环结束。
- 增量:主要用于递增计数器(但可以是任何在循环的结束被执行的代码)。
注释:上面的初始值和增量参数可为空,或者有多个表达式(用逗号分隔)。
foreach 循环
用于遍历数组
PHP 函数
PHP函数准则:
函数的名称应该提示出他的功能;函数名称以字母或下划线开头(不能以数字开头)
添加参数
参数就在函数名称后面的一个括号内指定。
PHP 魔术常量
__LINE__ __FILE__ __DIR__ __FUNCTION__ __CLASS__
__TRAIT__ __METHOD__ __NAMESPACE__
命名空间(namespace)
解决问题:1.用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
2.为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性.