目录
- 概述
- 安装环境
- php基础语法
- 变量
- 运算符
- 条件与分支
- 循环
- 数组
概述
PHP是超文本预处理器(Hypertext Preprocessor)的简称,是一种用于创建动态性交互网站的强有力的语言。
其语法利用借鉴了 C,Java 和 Perl,非常容易学习。该语言的主要目标是让 Web 开发人员可以很快写出动态生成的网页,如用于开发留言板、购物网站、论坛等,但 PHP 的功能远不止如此。PHP是如此的易用且功能强大,因此深受广大 Web 开发人员的喜爱。对比其他 Web 开发语言,PHP 的市场份额也越来越大。据统计,世界上有超过 60% 的网站后台语言采用 PHP。
安装环境
PHP 学习环境
学习PHP,我们需要准备一个可以支持PHP运行的环境:
1.PHP编译器:支持 PHP 运行的核心 2.Apache Web 服务器:提供 Web 服务,并支持 PHP 解析 3.MySQL数据库:用于学习 PHP 操作 MySQL 数据库 4.操作系统:默认为个人PC,安装 Windows 2000 以上系统 5.编辑工具:EditPlus 或IDE工具如 Zend Studio 或 sublime3 HbuilderX 、 vscode等 6.浏览器:IE6 或以上版本、Firefox 、chrome谷歌浏览器版 7.文件存储位置:E:html 注意:文件存储位置不是特定的,只要您的 Apache Web 服务器能解析到就行,在此设置是为了跟XHTML+CSS教程保持一致。
phpStudy集成环境
phpStudy 2018版本(php一键安装包),集成PHP7,16种组合,超全大合集 2018是一款非常强大的php环境调试工具,一次性安装,无须配置即可使用,是非常方便、好用的PHP调试环境。对学习PHP的新手来说,WINDOWS下环境配置是一件很困难的事;对老手来说也是一件烦琐的事。因此无论你是新手还是老手,该程序包都是一个不错的选择。
phpstudy 安装教程
phpstudy2018的安装步骤
1、phpstudy2018软件的下载:
下载地址:http://www.phpstudy.net/download.html
下载后打开存放软件的文件夹,对软件进行解压。
2、phpstudy2018软件的安装:
左键双击软件启动程序,选择要安装软件的文件夹,软件尽量不要安装在c盘。 选择好安装目录后,点击是,进行安装。等待一小段时间软件就会安装完成啦!
3、启动服务器
php基础语法
PHP 书写格式
从一个例子开始。
启动编辑器,创建一个php文件并键入如下代码:
<?php
echo "你好!";
?>
将该文件命名为 test.php 并存储于 D:\phpStudy\PHPTutorial\WWW 目录下。 前提是phpstudy默认安装在d盘 在浏览器地址栏里访问该 php 文件:http://127.0.0.1/test.php,输出结果如下:
你好!
我们通过浏览器查看网页的源代码,也只是:
你好!
在该例子中,我们以 echo 指令输出一个字符串“你好!”。
从这个例子可以看出:
1.PHP 文件或 PHP 代码段以“<?php”开头,以“?>”结束,中间为php代码 2.每一个指令集以 ; 符号结束 3.浏览器得到的为 PHP 解析器执行完 php 代码后的结果,网站浏览者不能查看到 php 文件的原始代码 当然,要输出标准的html代码,可以把上例完善为:
<html>
<head>
<title>PHP 测试</title>
</head>
<body>
<p>
<?php
echo "你好!";
?>
</p>
</body>
</html>
可见,PHP 代码可以和 HTML 代码混写。
echo 是 PHP 内置的一个指令,用于输出1个或多个字符串,和 echo 类似的还有 print。
对比学习
js | php |
---|
js代码用包括 | php代码用<?php ?>包括 | js用document.write输出 | php 用户 echo输出 | js用;结束一行代码 | php必须用;结束一行代码 |
变量
PHP变量用于存储字符、数字、数组甚至对象资源等,以便在我们需要的地方使用。
定义一个变量的语法:
$变量名 = 值;
使用变量的例子:
<?php
$var_char = "你好!";
echo $var_char;
?>
执行这段代码输出的结果是: 你好!
常见的php数据类型 字符串、整型、浮点型、布尔型
<?php
$name = "mumu";
$age = 18;
$price = 3.5;
$flag = TRUE;
?>
变量的命名
从这个例子可以看出,变量名以 $ 开始,标明这是一个变量。变量名以字母(a-z、A-Z)或者下划线 _ 开始,后面可以跟任意字母或数字以及下划线,但不能是空格。
如下这些变量名是有效的:
$var_char
$varChar
$_varChar
$var_char5
提示
关于变量命名,我们建议变量名以标明其实际语意的组合为佳,如 $my_name 或 $myName 格式。
延伸阅读
与 C 语言等强类型的编程语言不同,PHP 是一门松散类型的语言,即不需要在设置变量之前声明该变量。根据变量被设置的方式,PHP 会自动地把变量转换为正确的数据类型,且变量会在使用时被自动声明,这一属性给 Web 编程带来了极大的灵活性。
案例
本次班级的最高分98.5分,有曾木木获得。用合适的变量存储并输出如下
本次考试成绩最高分:98.5 最高分得主:曾木木
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>最高得分</title>
</head>
<body>
<?php
$score = 98.5;
$name = "曾木木";
echo "本次考试成绩最高分",$score,"<br>";
echo "最高分得主:$name";
?>
</body>
</html>
运算符
PHP 运算符主要包括:
- 算术运算符
- 赋值运算符
- 比较运算符
- 三元运算符
- 逻辑运算符
- 字符串运算符
- 错误控制运算符
算术运算符
运算符 | 说明 | 例子 | 运算结果 |
---|
+ | 加 |
x
=
2
;
x = 2;
x=2;y = $x+1; | $y = 3 | - | 减 |
x
=
2
;
x = 2;
x=2;y = $x-1; | $y = 1 | * | 乘 |
x
=
2
;
x = 2;
x=2;y = $x*3; | $y = 6 | / | 除,返回结果为浮点类型 |
x
=
6
;
x = 6;
x=6;y = $x/3; | $y = 2 | % | 求余,返回结果为浮点类型 |
x
=
6
;
x = 6;
x=6;y = $x%4; | $y = 2 | ++ | 递加,分为前加和后加对布尔值和 NULL 无效 |
x
=
2
;
+
+
x = 2;++
x=2;++x;(前加)$x++;(后加) | $x = 3 | – | 递减,分为前递减和后递减对布尔值和 NULL 无效 |
x
=
2
;
?
?
x = 2;--
x=2;??x;(前减)$x–;(后减) | $x = 1 |
对于前加和后加,执行后的结果都是变量加1,其区别在于执行时返回结果不一样,参考下面两个例子:
<?php
$x = 2;
echo $x++;
echo $x;
$x = 2;
echo ++$x;
echo $x;
?>
递减同理。
赋值运算符
赋值运算符“=”用于赋值运算,赋值运算符的作用在于把右边的值赋值给左边变量:
$x = 2;
该例子将整型值 2 赋值给变量 $x。
赋值运算符其他用法
赋值运算符可以嵌套使用:
<?php
$y = ($x = 2) + 5;
?>
赋值运算符的一些变形使用方法:
$y += $x;
实际上它等同于:
$y = $y + $x;
同理有:
$y -= $x;
$y *= $x;
$y /= $x;
$y %= $x;
$y .= $x;
比较运算符
运算符 | 说明 | 例子 | 运算结果 |
---|
== | 等于 | 2 == 3 | FALSE | != | 不等于,也可写作<> | 2 == 3 | TRUE | > | 大于 | 2 > 3 | FALSE | < | 小于 | 2 < 3 | TRUE | >= | 大于等于 | 2 >= 3 | FALSE | <= | 小于等于 | 2 <= 3 | TRUE |
比较运算符也可用于字符串比较。
三元运算符
三元可以视作是特殊的比较运算符:
(expr1) ? (expr2) : (expr3)
语法解释:在 expr1 求值为 TRUE 时整个表达式的值为 expr2,否则为 expr3。
例子:
$y = ($x == 2) ? $x : 1;
该例子判断变量
x
的
值
是
否
等
于
2
,
如
果
x的值是否等于2,如果
x的值是否等于2,如果x等于2,那么
y
的
值
就
等
于
y的值就等于
y的值就等于x(也就是等于2),反之$y就等于1。
提示
为了避免错误,将三元运算符各表达式用括号括起来是个不错的主意。
逻辑运算符
运算符 | 说明 | 例子 | 运算结果 |
---|
&& | 逻辑与,也可写作 and |
x
=
2
;
x = 2;
x=2;y = 6;$x && $y > 5 | FALSE | || | 逻辑或,也可写作 or |
x
=
2
;
x = 2;
x=2;y = 6;$x && $y > 5 | TRUE | ! | 逻辑非,取逻辑的反面 |
x
=
2
;
x = 2;
x=2;y = 6;!($x > $y) | TRUE |
连接运算符
字符串运算符主要指连接运算符“.”,它将连接其左右参数字符串。
例子:
$x = "beijing";
$y = $x."你好";
如该例子所示,字符和变量共同输出时需要使用连接运算符。
连接符与赋值运算符一起可构成连接赋值运算符:
$x = "beijing";
$x .="你好";
错误控制运算符
错误控制运算符:@,当将其放置在一个 PHP 表达式之前,该表达式可能产生的任何错误信息都被忽略掉。
<?php
$my_file = @file ('file1') or
die ("打开文件失败,错误信息: '$php_errormsg'");
?>
错误控制运算符经常用于在可能产生错误的地方屏蔽 PHP 的系统错误而提示友好的错误信息。
案例
1.列出 购物小票清单 并算出总价格 T恤价格 245 网球鞋价格 570 网球拍的价格为 320 折扣为 8折 T恤件数 2件 运动鞋 1双 网球拍1 个
<?php
$shirePrice = 245;
$shoePrice = 570;
$padPrice = 320;
$discount = 0.8;
$tNo=2;
$sNo=1;
$pNo=1;
$totalPrice = ($tNo*$shirePrice+$sNo*$shoePrice+ $padPrice*$pNo)* $discount;
$score =$totalPrice/100*3;
$score = (int)$score;
echo "T恤价格: $shirePrice <br>";
echo "网球鞋价格: $shoePrice <br>";
echo "网球拍的价格: $padPrice <br>";
echo "折扣:",$discount*10,"折<br>";
echo "总价: $totalPrice<br>";
echo "收款1500找零:",1500- $totalPrice,"<br>";
echo "本次您购物获得的积分: $score ";
?>
扩展 客户付款1500 求出找零,100元3个积分,算出用户获得多少个积分 (int)25.5;能把25.5转换为25 2.幸运抽奖 随机生成一个四位数会员卡,如果卡号的个位+十位+百位+千位之和大于 大于20就是幸运客户 输出如下内容 提升 rand(5, 15);//在5~15之间取一个数
会员卡号:6817
是幸运客户吗?是
<?php
$cardNo = rand(1000,9999);
$g = $cardNo%10;
$s = $cardNo/10%10;
$b = $cardNo/100%10;
$q = (int)($cardNo/1000);
echo "会员卡号:$cardNo<br>";
$sum = $q+$b+$s+$g;
$luck = $sum > 20?"是":"不是";
echo "是幸运客户吗?$luck<br>";
?>
条件与分支
if
1.if 2.if…else 3.elseif
if
语法:
if (expr){
statement
}
例子:
<?php
if ($x > $y)
echo "x 大于 y";
?>
if…else
语法:
if (expr){
statement1
} else {
statement2
}
它表示只要 expr 成立,则执行 statement1 ,否则执行 statement2 。
例子:
<?php
if ($x > $y)
echo "x 大于 y";
} else {
echo "x 小于等于 y";
}
?>
elseif
语法:
if (expr){
statement1
} elseif (expr2) {
statement2
} else {
statement3
}
它表示只要 expr1 成立,则执行 statement1 ,否则检测 expr2 ,如果 expr2 成立则执行 statement2 。如果 expr2 也不成立,则执行 statement3 。
例子:
<?php
if ($x > $y) {
echo "x 大于 y";
} elseif ($x == $x) {
echo "x 等于 y";
} else {
echo "x 小于 y";
}
?>
提示
elseif 可以有多个,以实现更多条件的选择,但多数情况下,条件更多时,我们可以选择switch来实现。
案例
1.嵌套if折扣计算 随机生成 顾客是否为会员,顾客消费金额100-500 如果非会员按原价,如果是会员如果大于200按7.5折价,其他按8.5折 您的优惠前消费金额为428 尊敬的顾客您好! 您消费金额为428
您的优惠前消费金额为351 尊敬的会员vip会员您好! 您消费金额满200优惠过后价格为263.25
您的优惠前消费金额为10 尊敬的会员vip会员您好! 您消费金额优惠过后为8.5
$vip = rand(0,1);
$num = rand(1,500);
echo "您的优惠前消费金额为$num<br>";
if($vip){
echo "尊敬的会员vip会员您好!<br>";
if($num>=200){
echo "您消费金额满200优惠过后价格为",$num*0.75,"<br>";
}else{
echo "您消费金额优惠过后为",$num*0.85,"<br>";
}
}else{
echo "尊敬的顾客您好!<br>";
echo "您消费金额为",$num,"<br>";
}
循环
PHP 循环控制主要是 while 循环和 for 循环。
while循环
while循环是PHP中最简单的循环,其基本格式为:
while (expr){
statement
}
while (expr):
statement
endwhile;
该语法表示,只要expr表达式为TRUE,那么就一直执行statement直到expr为FALSE为止,statement表示要执行的动作或逻辑。
例子:
<?php
$i = 1;
while ($i <= 10) {
echo $i;
$i++;
}
?>
该例子循环输出1到10。
for循环
for循环是PHP中更为复杂的循环,其语法如下:
for (expr1; expr2; expr3){
statement
}
下面的例子依然输出1到10:
<?php
for ($i = 1; $i <= 10; $i++) {
echo $i;
}
?>
语法解读
1.第一个表达式(expr1)在循环开始前无条件求值一次
2.expr2 在每次循环开始前求值,如果值为 TRUE,则继续循环,执行嵌套的循环语句;如果值为 FALSE,则终止循环。
3.expr3 在每次循环之后被求值(执行)
4.每个表达式都可以为空。如果expr2 为空意则将无限循环下去,但可以通过break来结束循环:
<?php
for ($i = 1; ; $i++) {
if ($i > 10) {
break;
}
echo $i;
}
?>
提示
在使用循环语句的时候,我们通常要注意不要无限循环而造成程序“僵死”,另外还要注意循环条件(循环判断表达式),以确保循环结果正确。
案例
1.计算100以内偶数和,用while 与for循环各实现一次
<?php
$num = 1;
$total =0;
while($num<=100){
if($num%2==0){
$total+=$num;
}
$num++;
}
echo "1-100偶数和为$total<br>";
$total=0;
for($i=0;$i<=100;$i++){
if($i%2==0){
$total+=$i;
}
}
echo "1-100偶数和为$total<br>";
?>
数组
数组的概念
数组(array)是 PHP 中一个非常重要的概念,我们可以把数组看做一系列类似的数据的集合,实际上数组是一个有序图。
PHP 还提供了超过 70 个内建函数来操作数组。
创建数组
使用 array() 语言结构创建数组:
<?php
$arr_age1 = array(18, 20, 25);
$arr_age2 = array("wang"=>18, "li"=>20, "zhang"=>25);
$arr_age3 =array();
?>
也可以使用数组控制器 [] 来创建数组:
<?php
$arr_age1[] = 18;
$arr_age1[] = 20;
$arr_age1[] = 25;
$arr_age2["wang"] = 18;
$arr_age2["li"] = 20;
$arr_age2["zhang"] = 25;
?>
数组键名与值
数组实体都包含两项:键名和值。
在下面创建数组的例子中:
$arr_age1 = array(18, 20, 25);
我们给 $arr_age1 分配了 3 个数组单元(也称元素),其值分别是 18、20 和 25。系统会自动给这 3 个数组单元分配 3 个数字序号,分别为 0、1 和 2。即 $arr_age1 数组的完整结构为:
Array ( [0] => 18 [1] => 20 [2] => 25 )
这个系统自动分配的序号称为键名,这种键名为数字 ID 的数组称为 索引数组( indexed array ) 。
当然也可以手动指定键名:
$arr_age1 = array( 0 => 18, 1 => 20, 2 => 25 );
提示
- 手动指定键名可以不从 0 开始,也可以不用按数字顺序来指定键名。
- 当一个新单元加入数组而没有指定健名时,系统将自动的在现有数组中最大的数字键中加 1 ,作为新单元的键名。
当使用字符串而非数字索引作为键名时,这种数组称为 关联数组( associative array ) :
$arr_age2 = array("wang"=>18, "li"=>20, "zhang"=>25);
但在 PHP 中,这两种数组没有明显的界限,二者可以混合使用。注意关联数组中对于键名大小写是敏感的。
输出数组单元值
可以使用如下方式访问输出数组单元值:
echo $arr_age1[0];
echo $arr_age2["wang"];
某些情况下为了调试,可能需要输出整个数组的数据及结构,这时候需要使用 print_r() 或 var_dump() 函数,具体参见《PHP 打印输出数组内容及结构 print_r 与 var_dump 函数》
操作数组单元
可以象操作普通变量一样操作数组单元,如:
<?php
$arr_age2 = array("wang"=>18, "li"=>20, "zhang"=>25);
$arr_age2["wang"] = $arr_age2["wang"] + 10;
?>
现在 $arr_age2 为:
Array ( [wang] => 28 [li] => 20 [zhang] => 25 )
检查一个数组单元是被设定,请使用 isset() 。
销毁数组
使用 unset() 函数来销毁一个数组单元或整个数组:
<?php
unset($arr_age1[0]);
unset($arr_age1);
?>
案例
1.编写数组 有一批特价商品,“Nike背包”,“Adidas运动衫”,“李宁运动鞋”,“Kappa外套”,“361°腰包”,请用数组形式存储,并 用print_r 输出 用echo 输出第二个商品 修改 第三个商品为 “真维斯外套” 并打印整个数组
$goods = ["Nike背包","Adidas运动衫","李宁运动鞋","Kappa外套","361°腰包"];
print_r($goods);
echo $goods[2];
$goods[3]="真维斯外套";
print_r($goods);
2.用for循环添加在一个组8个商品,每个商品的价格是前二个商品的之和,前两个商品的的价格分别为1,和2元;
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 5 [4] => 8 [5] => 13 [6] => 21 [7] => 34 )
$arr = array();
for($i=0;$i<8;$i++){
if($i==0){$arr[]=1;}
elseif($i==1){$arr[]=2;}
else{
$arr[$i] = $arr[$i-1]+$arr[$i-2];
}
}
print_r($arr);
打印数组
print_r() 和 var_dump() 函数可以打印输出整个数组内容及结构。
print_r()
利用 print_r() 函数可以打印输出整个数组内容及结构,按照一定格式显示键和元素。注意 print_r() 函数不仅是只用于打印,实际它是用于打印关于变量的易于理解的信息。
语法:
bool print_r( mixed expression )
例子:
<?php
$arr_age = array(18, 20, 25);
print_r($arr_age);
?>
运行该例子输出:
Array ( [0] => 18 [1] => 20 [2] => 25 )
提示
查看输出结果的网页源代码,可以看到更易读的格式:
Array
(
[0] => 18
[1] => 20
[2] => 25
)
var_dump()
同 print_r() 函数一样,var_dump() 函数也可以用于打印数组的数据及结构。不过 var_dump() 函数功能比 print_r() 更强大,可以同时打印多个变量且给出变量的类型信息。
例子:
<?php
$arr_age = array(18, 20, 25);
var_dump($arr_age);
?>
运行该例子输出:
array(3) {
[0]=>
int(18)
[1]=>
int(20)
[2]=>
int(25)
}
print_r() 和 var_dump() 函数一般是用于调试程序使用,更多情况是使用 echo 来输出具体的数组单元值。
遍历数组
foreach()
PHP foreach() 语法结构用于遍历操作或输出数组,foreach() 仅能用于遍历数组或对象,当试图将其用于其它数据类型或者一个未初始化的变量时会产生错误。
语法:
foreach (array as $value)
statement
foreach (array as $key => $value)
statement
上述语法中,每次循环将当前单元的值赋给 $value 并且数组内部的指针向前移一步。在第二种语法格式中还将当前单元的键名也会在每次循环中赋给变量 $key。
例子:
<?php
$arr_age = array("wang"=>18, "li"=>20, "zhang"=>25);
foreach ($arr_age as $age) {
echo $age,'<br />';
}
?>
运行该例子输出:
18
20
25
使用数组键值
<?php
$arr_age = array("wang"=>18, "li"=>20, "zhang"=>25);
foreach ($arr_age as $key=>$age) {
echo $key,': ',$age,'<br />';
}
?>
运行例子输出:
wang: 18
li: 20
zhang: 25
&引用符号
<?php
$arr_age = array("wang"=>18, "li"=>20, "zhang"=>25);
foreach ($arr_age as &$age) {
$age = $age+10;
echo $age,'<br />';
}
print_r($arr_age);
?>
运行例子输出:
28
30
35
Array ( [wang] => 18 [li] => 20 [zhang] => 25 )
要在 foreach 中修改原数组元素,可以通过引用来实现,将上面的例子更改为:
<?php
$arr_age = array("wang"=>18, "li"=>20, "zhang"=>25);
foreach ($arr_age as &$age) {
$age = $age+10;
echo $age,'<br />';
}
print_r($arr_age);
?>
运行例子输出:
18
20
25
Array ( [wang] => 28 [li] => 30 [zhang] => 35 )
延伸预读
PHP 数组是通过哈希表(HashTable)表实现的,因此 foreach 遍历数组时是依据元素添加的先后顺序来进行的。如果想按照索引大小遍历,应该使用 for() 循环遍历。
for() 循环遍历数组
如果是操作 连续键值 的数组,也可以采用 for() 循环来遍历数组:
<?php
$arr_age = array(18, 20, 25);
$num = count($arr_age);
for($i = 0; $i < $num; $i++){
echo $arr_age[$i]."<br />";
}
?>
运行例子输出如下:
18
20
25
count 计算数组中的数量
案例
1.将数组 遍历输出下列形式:
wang:18
li:20
zhang:25
$arr_age = array("wang"=>18, "li"=>20, "zhang"=>25);
foreach($arr_age as $key=>$value){
echo "$key:$value<br>";
}
2.排序 将下列字母排序 ‘a’,‘c’,‘u’,‘b’,‘e’,‘p’,‘f’,‘z’ 结构为
Array ( [0] => a [1] => b [2] => c [3] => e [4] => f [5] => p [6] => u [7] => z )
提示 sort(
a
r
r
)
正
序
r
s
o
r
t
(
arr)正序 rsort(
arr)正序rsort(arr)倒序 提示 natsort() 自然排序
$arr = array('a12','c1','a1','u','b','a2','e','p','f','z');
sort($arr);
print_r($arr);
扩展
shuffle 乱序数组 implode(连接符, 数组) 返回值是连接完后的字符串 explode(分割符,字符串) 返回值是拼接后的数组 array_merge(要合并的数组) 返回值是合并后的数组 $key = array_search(“a”, $arr_a); 数组查找 array_reverse(数组) 翻转数组
|