一、PHP简介
1.什么是PHP?
●PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。
●PHP 是 “PHP Hypertext Preprocessor” 的首字母缩略词。
●PHP 是一种被广泛使用的开源脚本语言。
●PHP 脚本在服务器上执行。
●PHP 没有成本,可供免费下载和使用。
2.什么是 PHP 文件?
●PHP 文件能够包含文本、HTML、CSS 以及 PHP 代码。
●PHP 代码在服务器上执行,而结果以纯文本返回浏览器。
●PHP 文件的后缀是 “.php
”。
3.PHP 能够做什么?
●PHP 能够生成动态页面内容。
●PHP 能够创建、打开、读取、写入、删除以及关闭服务器上的文件。
●PHP 能够接收表单数据。
●PHP 能够发送并取回 cookies。
●PHP 能够添加、删除、修改数据库中的数据。
●PHP 能够限制用户访问网站中的某些页面。
●PHP 能够对数据进行加密。
●PHP可以输出 HTML、图像、PDF 文件、 Flash 影片,还可以输出任何文本,比如 XHTML 和 XML。
二、PHP基础语法
1.基础语法
PHP 脚本在服务器上执行,然后向浏览器发送回纯 HTML 结果。
PHP 脚本可放置于文档中的任何位置。
(1)PHP 脚本以 <?php
开头,以 ?>
结尾。
(2)PHP 语句以分号结尾(;
)
(3)PHP注释
<?php
// 这是单行注释
# 这也是单行注释
/*
这是多行注释块
它横跨了
多行
*/
?>
(4)PHP 大小写敏感
在 PHP 中,所有用户定义的函数、类和关键词(例如 if、else、echo
等等)都对大小写不敏感。
不过在 PHP 中,所有变量都对大小写敏感。
(5)PHP_EOL分隔符
<?php
echo "1".PHP_EOL."2"
?>
输出:1 2
2.输出echo和print语句
(1)echo 和 print 语句
echo
和 print
之间的差异:
●echo
- 能够输出一个以上的字符串。
●print
- 只能输出一个字符串,并始终返回 1。
●echo
比 print
稍快,因为它不返回任何值。
(2) echo 语句
echo
是一个语言结构,有无括号均可使用:echo
或 echo()
。
输出字符串时带分号,多个字符串可以用逗号分开。
输出变量直接$变量名
,输出数组数据用{$数组名[序号]}
。
<?php
$txt1="Learn PHP";
$txt2="W3School.com.cn";
$cars=array("Volvo","BMW","SAAB");
echo $txt1;
echo "<br>";
echo "Study"," PHP at $txt2";
echo "My car is a {$cars[0]}";
?>
注意:单引号、双引号在注释里是不同含义的!
定义字符串时用的是双引号,但是输出如果用的是单引号,不会引用变量。
例如:
<?php
$a="text";
echo 'print $a'
?>
输出结果:print $a
(3)print 语句
print
也是语言结构,有无括号均可使用:print
或 print()
。
输出字符串时带分号,只能输出一个字符串。
输出变量直接$变量名
,输出数组数据用{$数组名[序号]}
。
3.定界符EOF(heredoc)
EOF(heredoc)
是一种在命令行shell(如sh、csh、ksh、bash、PowerShell和zsh)和程序语言(像Perl、PHP、Python和Ruby)里定义一个字符串的方法。
●PHP定界符的作用就是按照原样,包括换行格式什么的,输出在其内部的东西;
●在PHP定界符中的任何特殊字符都不需要转义;
●PHP定界符中的PHP变量会被正常的用其值来替换。
使用概述:
- 必须后接分号。
- EOF 可以用任意其它字符代替,且不能在正文中出现。
- 结束标识必须顶格独自占一行,不能有缩进和空格。
- 开始标识可以不带引号或带单双引号,不带引号与带双引号效果一致,解释内嵌的变量和转义符号,而带单引号则不解释内嵌的变量和转义符号。
- 当内容需要内嵌引号(单引号或双引号)时,不需要加转义符,本身对单双引号转义。
- 位于开始标记和结束标记之间的变量可以被正常解析,但是函数则不可以。在 heredoc 中,变量不需要用连接符 . 或 , 来拼接。
例子:
<?php
echo <<<EOF
<h1>我的第一个标题</h1>
<p>我的第一个段落。</p>
EOF;
// 结束需要独立一行且前后不能空格
$name="runoob";
$a= <<<EOF
"abc"$name
"123"
EOF;
// 结束需要独立一行且前后不能空格
echo $a;
?>
结果:
三、PHP变量和常量
1.PHP变量
变量是存储信息(数据)的容器。
(1)PHP 变量规则
●变量以 $
符号开头,其后是变量的名称。
●变量名称必须以 字母 或 下划线 开头。
●变量名称不能以数字开头。
●变量名称只能包含字母数字字符和下划线(A-z
、0-9
以及 _
)。
●变量名称对大小写敏感($y
与 $Y
是两个不同的变量)。
变量的名称可以很短(比如 x
和 y
),也可以取更具描述性的名称(比如 carname
、total_volume
)。
(2)创建PHP变量
PHP 没有创建变量的命令。
变量会在首次为其赋值时被创建:
<?php
$txt="Hello world!";
$x=5;
$y=10.5;
?>
(3)变量作用域
在 PHP 中,可以在脚本的任意位置对变量进行声明。
变量的作用域指的是变量能够被引用/使用的那部分脚本。
PHP 有三种不同的变量作用域:
●local(局部)
函数内部声明的变量拥有 LOCAL 局部作用域,只能在函数内部进行访问。
函数参数:作为形式参数。
●global(全局)
函数之外声明的变量拥有 Global 全局作用域,只能在函数以外进行访问。
所以定义全局变量前部不一定有关键词global
,默认就是全局。
而global
关键词用于在函数内访问全局变量。
例子:
function myTest() {
global $x,$y; //可以访问在函数外部的全局变量$x,$y,不声明就不能访问外部变量。
$y=$x+$y;
}
PHP 同时在名为 $GLOBALS[index]
的数组中存储了所有的全局变量。下标存有变量名。这个数组在函数内也可以访问,并能够用于直接更新全局变量。
上面的例子重写:
function myTest() {
$GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];
}
●static(静态)
2.PHP变量-超全局变量
超全局变量在 PHP 4.1.0 中引入,是在全部作用域中始终可用的内置变量。
●$GLOBALS
●$_SERVER
●$_REQUEST
●$_POST
●$_GET
●$_FILES
●$_ENV
●$_COOKIE
●$_SESSION
3.PHP常量
常量类似变量,但是常量一旦被定义就无法更改或撤销定义。
(1)PHP 常量简介
常量是单个值的标识符(名称)。在脚本中无法改变该值
有效的常量名以 字符 或 下划线 开头(常量名称前面没有 $
符号)。
与变量不同,常量贯穿整个脚本是自动全局的,所以函数内可以引用函数外的常量。
(2)设置 PHP 常量
如需设置常量,请使用 define()
函数 - 它使用三个参数:
●首个参数定义常量的名称。
●第二个参数定义常量的值。
●可选的第三个参数规定常量名是否对大小写不敏感。默认是 false
。
4.魔术常量
PHP 向它运行的任何脚本提供了大量的预定义常量。
其中有八个魔术常量它们的值随着它们在代码中的位置改变而改变。
_LINE_
_FILE_
_DIR_
_FUNCTION_
_CLASS_
_TRAIT_
_METHOD_
_NAMESPACE_
四、PHP数据类型
字符串、整数、浮点数、逻辑、数组、对象、NULL。
1.PHP字符串
字符串可以是引号内的任何文本,可以使用单引号或双引号。
在 PHP 中,只有一个字符串运算符。
并置运算符 (.) 用于把两个字符串值连接起来。
2.PHP整数
可以用三种格式规定整数:
十进制、十六进制(前缀是 0x)或八进制(前缀是 0)。
PHP var_dump()
会返回变量的数据类型和值:
<?php
$x = 5985;
var_dump($x); #int(5985)
echo "<br>";
$x = -345; // 负数
var_dump($x); #int(-345)
echo "<br>";
$x = 0x8C; // 十六进制数
var_dump($x); # int(140)
echo "<br>";
$x = 047; // 八进制数
var_dump($x); #int(39)
?>
3.PHP浮点数
浮点数是有小数点或指数形式的数字。
4.PHP逻辑
逻辑是true
或false
。 常用于条件测试。
5.PHP数组
数组在一个变量中存储多个值。
点击此处,查看PHP数组。
6.PHP对象
对象是存储数据和有关如何处理数据的信息的数据类型。
在 PHP 中,必须明确地声明对象。
声明对象的类,使用 class
关键词。类是包含属性和方法的结构。
在对象类中定义数据类型,然后在该类的实例中使用此数据类型。
点击此处,查看PHP对象。
7.PHP NULL值
特殊的 NULL
值表示变量无值。NULL
是数据类型 NULL
唯一可能的值。
NULL
值标示变量是否为空。也用于区分空字符串与空值数据库。
可以通过把值设置为 NULL
,将变量清空。
五、PHP运算符
1.算数运算符
+ - * / %
2.赋值运算符
= += -= *= /= %=
3.字符串运算符
运算符 | 名称 | 例子 | 结果 |
---|---|---|---|
. | 串接 | $txt1 = “Hello” $txt2 = $txt1 . " world!" | 现在 $txt2 包含 “Hello world!” |
.= | 串接赋值 | $txt1 = “Hello” $txt1 .= " world!" | 现在 $txt1 包含 “Hello world!” |
4.PHP递增/递减运算符
运算符 | 名称 | 描述 |
---|---|---|
++$x | 前递增 | $x 加一递增,然后返回 $x |
$x++ | 后递增 | 返回 $x,然后 $x 加一递增 |
–$x | 前递减 | $x 减一递减,然后返回 $x |
$x– | 后递减 | 返回 $x,然后 $x 减一递减 |
5.比较运算符
== === !=或<> !=== > < >= <=
6.逻辑运算符
运算符 | 名称 | 描述 |
---|---|---|
and | 与 | 如果 $x 和 $y 都为 true,则返回 true。 |
or | 或 | 如果 $x 和 $y 至少有一个为 true,则返回 true。 |
xor | 异或 | 如果 $x 和 $y 有且仅有一个为 true,则返回 true。 |
&& | 与 | 如果 $x 和 $y 都为 true,则返回 true。 |
|| | 或 | 如果 $x 和 $y 至少有一个为 true,则返回 true。 |
! | 非 | 如果 $x 不为 true,则返回 true。 |
7.PHP 数组运算符
PHP 数组运算符用于比较数组:
运算符 | 名称 | 描述 |
---|---|---|
+ | 联合 | $x 和 $y 的联合(但不覆盖重复的键) |
== | 相等 | 如果 $x 和 $y 拥有相同的键/值对,则返回 true。 |
=== | 全相等 | 如果 $x 和 $y 拥有相同的键/值对, 且顺序相同类型相同,则返回 true。 |
!= | 不相等 | 如果 $x 不等于 $y,则返回 true。 |
<> | 不相等 | 如果 $x 不等于 $y,则返回 true。 |
!== | 不全等 | 如果 $x 与 $y 完全不同,则返回 true。 |
例子:
<?php
$x = array("a" => "apple", "b" => "banana");
$y = array("c" => "orange", "d" => "peach");
$z = $x + $y; // $x 与 $y 的联合
var_dump($z);
var_dump($x == $y);
var_dump($x === $y);
var_dump($x != $y);
var_dump($x <> $y);
var_dump($x !== $y);
?>
运行结果:
array(4) { ["a"]=> string(5) "apple" ["b"]=> string(6) "banana"
["c"]=> string(6) "orange" ["d"]=> string(5) "peach" }
bool(false)
bool(false)
bool(true)
bool(true)
bool(true)
六、PHP流程控制结构
1.条件控制
(1)if…else
(2)switch
语法:
switch (expression)
{
case label1:
expression = label1 时执行的代码 ;
break;
case label2:
expression = label2 时执行的代码 ;
break;
default:
表达式的值不等于 label1 及 label2 时执行的代码;
}
工作原理:
●对表达式(通常是变量)进行一次计算。
●把表达式的值与结构中 case
的值进行比较。
●如果存在匹配,则执行与 case
关联的代码。
●代码执行后,break
语句阻止代码跳入下一个 case
中继续执行。
●如果没有 case
为真,则使用 default
语句。
例子:
<?php
$count=59;
switch($count)
{
case $count==100;
echo "满分";
break;
case $count>=90;
echo "优秀";
break;
case $count>=60;
echo "及格";
break;
default:
echo "不及格";
}
?>
2.循环控制
(1)while 和 do…while
(2)for循环
<?php
for ($i=0; $i<=10; $i++) {
echo "数字是:$i <br>";
}
?>
(3)foreach 循环
foreach
循环 只适用于数组 ,并用于遍历数组中的每个 键/值 对。
语法:
foreach ($array as $value) {
code to be executed;
}
foreach($array as $key=>$value) {
code to be executed;
}
每进行一次循环迭代,当前数组元素的值就会被赋值给 $value
变量,并且数组指针会逐一地移动,直到到达最后一个数组元素。
下面的例子输出给定数组($colors
)的值:
<?php
$colors = array("red","green","blue","yellow");
foreach ($colors as $value) {
echo "$value <br>";
}
?>
3.跳转语句
break ; // 终止当前循环,跳出循环结构
continue; // 终止本次循环,继续下一次循环
4.包含语句——PHP文件引用
include()
实现对外部文件的调用。
● 和require()
两者的区别在哪?
require
的使用:程序在执行前就会先读入所指定的文件
include
的使用:程序在读到 include
的文件时,才将它读进来
include_once()
require_once()
例子:
require("config.inc.php");
require_once("config.inc.php");
include("config.inc.php");
include_once("config.inc.php");