一. PHP简介:
PHP即“超文本预处理器”,创建于1994年,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习,使用广泛,主要适用于Web开发领域。
二. PHP的优点:
优点:
(一)快捷性。执行网页速度快。
(二)开放性和可拓展性强。开源,易于扩展附加功能。
(三) 数据库连接的广泛性。可以与很多主流的数据库建立起连接,如MySQL、ODBC、Oracle、IBM DB2等绝大多数数据库。
(四)面向过程和面向对象并用。可以分别使用面向过程和面向对象, 而且可以将PHP面向过程和面向对象两者一起混用,这是其它很多编程语言是做不到的。
(五)支持绝大多数Web服务器,包括:Apache,Microsoft Internet,Information Server PersonalWebServer等。
(六)功能强大,可伸缩性强。
三. PHPstudy环境搭建:
PHP常用集成环境软件:Phpstudy, WampServer, Xampp等。我们主要使用Phpstudy。
Phpstudy简介:对于程序员来说,Phpstudy是一个非常好用的PHP调试环境集成包。包含了最新的apache和PHP等程序,对学习PHP的新手来说,windows下环境配置是一件非常困难的事,对老手来说也是一件烦琐的事。所以Phpstudy程序包是很多程序员青睐的工具。
1)下载(略),根据32/64位,点击安装即可。
2)安装完成后页面会有此图标:
3)界面介绍:

在浏览器中输入:localhost:80,即可显示如下界面:

根据上图所示,PHPstudy的根目录是“www”。
四.编写第一个PHP应用程序:
4.1 方式一:在notepad++里面编写:(注意:由于PHP是html嵌入语言,所以php文件里面可以写HTML代码,但是文件后缀名必须是.php)
(解决中文乱码问题: notepad++中,先设置编码:UTF-8-BOM再编写代码即可)
演示步骤:
(1).保证apache和mysql都启动的情况下: 执行操作(如图)

(2).在里面新建txt文件,命名:demo01.php (如图)
<html>
<body>
<p>
<?php echo "Hello, 这是我写的第一个php文件"; ?>
</p>
</body>
</html>
(4).在phpstudy界面:网站–管理–打开网站–在地址栏输入:localhost/demo01.php 即可显示页面内容。
4.2 方式二:(更推荐)在HBuilder里面编写:
步骤如下:
(1)打开PHP的根目录:PHPstudy—网站—管理—打开根目录。
(2)新建一个txt文件,命名为“demo02.php”。
(3)HBuilder中创建一个web项目,将demo02.php拖入项目中,选择“创建该文件的链接”,下面打上“√”。
(4)编写“demo02.php”内容如下:
<html>
<head>
<meta charset="UTF-8">
<title>这是第一个PHP文件</title>
</head>
<body>
<p>
<!--
1.由于php中是注释html的内容,所以注释与html一样。
2.注意细节:
2.1.第一个'?'后面紧接着写'php'
2.2.echo表示在页面上输出,末尾有';'
2.3.想要在哪里输出内容,就把<?php echo "......"; ?> 写在哪里。
3.由于需要web服务器的支持,所以不能直接使用上方浏览器执行。
-->
<?php echo "hallo, hallo, 这是在HBuilder里面写的第一个php文件"; ?>
</p>
</body>
</html>
特别注意:在如果在HBuilder中修改了php文件名称,在www中文件名不会发生变化。浏览器访问路径以根目录中的文件名为准。
五. PHP嵌入HTML:
我们可以将PHP嵌入到HTML中,嵌入的方法有以下四种:
1.1.PHP默认语法:<?php echo “……”; ?>
(注意:当文件后缀名是.html时,不能在里面写php程序)
例(demo01):将php脚本嵌入到html文件中(demo01.php)
在WWW文件夹中新建一个文件夹“chapter02”,然后在chapter02里面新建demo01.php文件(注意,在页面演示时,路径需要加上chapter02,如:localhost/chapter02/demo01.php)
<html>
<body>
<!--1.将php脚本嵌入到html文件中,用于在页面上输出指定内容-->
<p>
<?php echo "今天天气不错!"; ?>
</p>
<!--2.将html标签嵌入到php脚本中-->
<?php echo "<p><h1>Tomorrow is sunny too!</h1></p>"; ?>
<!--3.将Javascript标签嵌入到php脚本中-->
<?php echo "<script>alert('你好,这是在php中写的Javascript弹框!');</script>"; ?>
</body>
</html>
1.2.短标记:
常见的短标记有以下三种:
<?print “……” ?>
<?= '……'?>
<? echo '……'?>
(注意:如果要启用短标记,需要启用php.ini的short_open_tag = on。)
设置短标记的方法:设置—配置文件—php.ini—php7.3.4nts点击进去,ctrl+f查询‘short’,查看是否默认是on。
另外,后期使用短标记可能会出现XML或XHTML等语法冲突,所以应该尽量避免使用。
例(demo02):演示php的短标记:
<html>
<body>
<!-- 1.php中的段标记:使用‘print’-->
<?print "你好!谢谢!" ?><br />
<!-- 2.php中的段标记:使用‘=’-->
<?='我也好,谢谢!!!'?><br />
<!-- 3.php中的段标记:省略‘php’-->
<? echo '他也好~~~'?>
</body>
</html>
1.3.嵌入多个代码块:
(注意:在同一个页面中,PHP代码与其他页面元素可以多次交替出现)
例(demo03):嵌入多个代码块:
<html>
<head>
<meta charset="UTF-8">
<title>
<!--页面标题也可以使用php输出-->
<?php echo 'demo03_演示php中嵌入多个代码块'; ?>
</title>
</head>
<body>
<p>
<!--1.在php中定义变量-->
<?php
$name = "张三";
$age = 20;
$address = '昆明市盘龙区';
?>
<!--2.在页面代码中嵌入需要输出的变量-->
<p>姓名是:<?php echo $name ?></p>
<p>年龄是:<?php echo $age ?></p>
<p>地址是:<?php echo $address ?></p>
</p>
</body>
</html>
六. PHP的注释:
(一)单行注释: //
(二)多行注释: /* */
(三)shell语法: #
例(demo04):注释及if语句演示:
<html>
<head>
<meta charset="UTF-8">
<title><?php echo 'demo05_演示注释和if语句'?></title>
</head>
<body>
<?php
// 1.单行注释
/*
2.多行注释
*/
# 3.Shell语法注释
// 定义一个变量
$age = 20;
# if语句判断,输出不同的结果
if($age >= 18){
echo '<h1>你已经成年了~~~</h1>';
}else{
echo '<h3>你是未成年人!!!</h3>';
}
?>
</body>
</html>
七. PHP的输出语句:
1)echo:不是一个函数,是一个语言结构,表示在页面输出。echo后面接单引号,双引号,小括号均可。需要注意的是:如果想给echo传递多个参数,就不能使用小括号。
2)var_dump():是调试函数,可以打印变量的值、数据类型及字符数。打印所有的对象,查看对象内部的数据结构。
3) print只能输出一个字符串,所以可以不用圆括号包围参数。
4)print_r():打印关于变量的信息,只能分别打印。如果是string,integer,float将打印变量值;如果是数组和对象,将按照一定格式显示键值对。
例(demo05):php的输出语句:
<html>
<head>
<meta charset="UTF-8">
<title>
<!--页面标题也可以使用php输出-->
<?php echo 'demo05_php中的常用输出语句'; ?>
</title>
</head>
<body>
<?php
/*
1.echo:不是一个函数,是一个语言结构,表示在页面输出。
echo后面接单引号,双引号,小括号均可。
需要注意的是:如果想给echo传递多个参数,就不能使用小括号。
*/
$arr2= array("a","b","c");
echo ("Nice to meet you! <br/>");
echo '你好! <br/>';
echo "你好!","我好!",'大家好!'; // 如果想给echo传递多个参数,就不能使用小括号。
echo $arr2; // echo不适合输出数组,因为输出结果是Array
echo true; // echo不适合输出布尔值,因为输出true的结果是'1';
echo false; // echo不适合输出布尔值,因为输出false没有结果。
// 2.var_dump():是调试函数,可以打印所有的对象,查看对象内部的数据结构。
// 定义两个变量
$a = 100;
$b = "Thanks";
// var_dump($a);
// var_dump($a,$b);
// 3.print只能输出一个字符串,所以可以不用圆括号包围参数。
// print $a;
// print $b;
// 4.print_r():打印关于变量的信息。如果是数组和对象,将按照一定格式显示键值对
// print_r($a, $b); // 不能放在一起打印,只能分别打印
// print_r($a);
// print_r($b);
// 5.数组的输出:
// 5.1.基本结构的数组:
// print $arr2; // 使用print只能输出数组的类型:Array
// print '<br/>';
// print_r($arr2); // Array ( [0] => a [1] => b [2] => c )
// print '<br/>';
// var_dump($arr2); // array(3) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" }
// print '<br/>';
// 5.2.数组内嵌套数组:
// "c"是一个数组:使用键值对的形式,而不是使用默认索引
// $arr=array("a"=>"张三","b"=>"李四","c"=>array("王大五","王二五","王三五"));
// print_r($arr);
?>
</body>
</html>
八. if语句:(例:demo01)
格式1:if(表达式)
语句; // 没有花括号时,只能执行一条语句。(同样适用于if-else等语句)
格式2:if(表达式){
语句1; // 有花括号时,可以执行多条语句。(同样适用于if-else等语句)
语句2;
……
}
例如:demo01:根据用户输入的手机号长度,判断号码格式是否正确。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>demo01_if-else判断用户输入的手机号码格式是否正确</title>
</head>
<body>
<form action="demo01.php" method="post">
<input placeholder="请输入手机号" type="number" name="telephone" /><br />
<input type="submit" value="提交" />
</form>
<?php
// 判断提交方式:
if($_POST){
// 获取用POST方式提交的: name属性:telephone。注意:使用[]
$tel = $_POST["telephone"];
// 判断输入的用户名和密码是否正确
if(strlen($tel) == 11){
echo "<span style='color: green;'>手机格式正确</span>";
}else{
echo "<span style='color: red;'>手机格式错误,请核对!</span>";
}
}
?>
</body>
</html>
九. if-else语句: (例:demo02)
1)只有一个语句的时候,可以使用如下形式:(可以不用“{}”)
if(表达式)
语句1;
else(表达式)
语句2;
2)有多个语句的时候,必须使用“{}”
if(表达式){
语句1;
语句2;
}
else(表达式){
语句3;
语句4;
}
例如:demo02:判断用户名和密码是否正确。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>demo02_if-else判断用户名和密码是否正确</title>
</head>
<body>
<form action="demo02.php" method="post">
<input placeholder="请输入用户名" type="text" name="username" /><br />
<input placeholder="请输入密码" type="password" name="password" /><br />
<input type="submit" value="提交" />
</form>
<?php
// 判断提交方式:
if($_POST){
// 设置初始的用户名和密码
$usn = "zhangsan";
$pwd = "123456";
// 获取用POST方式提交的: 输入的用户名、密码、验证码。注意:使用[]
$username = $_POST["username"];
$password = $_POST["password"];
// 判断输入的用户名和密码是否正确
if($usn==$username && $pwd==$password){
echo "登录成功!欢迎您:".$username;
}else{
echo "用户名密码或验证码输入错误!!!";
}
}
?>
</body>
</html>
十. switch语句: (例:demo03)
switch语句的一般形式:
switch(表达式){
case 常量表达式1:
语句1;
break;
case 常量表达式2:
语句2;
break;
……
default:
语句n;
break;
}
例如:demo03:switch语句判断用户星级评价。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>demo03_switch语句判断用户星级评价</title>
</head>
<body>
<h2>根据用户选择的星级判断</h2>
<form action="demo03.php" method="post">
<input placeholder="请为用户打分" type="number" name="score" />星
<input type="submit" value="提交" />
</form>
<?php
if($_POST){
$star = $_POST["score"];
// echo "$star";
switch($star){
case '1':
echo "1星评价,非常差";
break;
case '2':
echo "2星评价,较差";
break;
case '3':
echo "3星评价,及格";
break;
case '4':
echo "4星评价,较好";
break;
case '5':
echo "5星评价,非常优秀";
break;
default:
echo "评分有误";
break;
}
}
?>
</body>
</html>
十一. for循环语句: (例:demo04)
for循环的一般形式:
for(表达式1; 表达式2; 表达式3;){
循环体;
}
如果循环体不只有一句,必须加上{},默认都加上比较好。
例如:demo04:for循环输出9*9乘法表。
<?php
// 1.循环输出1-10的数(使用"."拼接换行符)
for($i=1; $i<=10; $i++){
echo $i."<br/>";
}
// 2.使用for循环输出9*9乘法表
// 表示制表符(空格)
for($i=0; $i<10; $i++){
for($j=1; $j<=$i; $j++){
echo $j."*".$i."=".$i*$j." ";
}
echo "<br/>";
}
?>
十二. foreach循环语句: (例:demo05)
foreach只能在PHP4以上的版本使用。有以下两种形式:
1)as后的$value是自定义的一个变量
foreach(数组表达式 as $value){
循环体;
}
2)as后的$key和$value是自定义的变量,他们是一组键值对
foreach(数组表达式 as $key => $value){
循环体;
}
补充:echo, print(),print_r()的区别:
echo : 输出一个或多个字符串。因为不是函数,所以没有返回值。不能通过数组名或对象名输出完整的数组和对象数据,只能通过遍历。
print : 只能输出简单变量的值,如int,string类型变量的值。不能通过数组名或对象名输出完整的数组和对象数据,只能通过遍历。
print_r : 可以输出简单类型和复杂类型的值,如数组,对象。可以通过数组名或对象名输出完整的数组和对象数据。
例如:demo05:foreach循环输出数组:
<?php
// 1.定义一个数组:
$arr = array("张三","李四","王五","赵六");
//echo $arr[2]; // 只能输出'王五'一个人。
//echo ($arr); // Array
//print($arr); // Array
//print_r($arr); // 能够输出完整的数组数据
// 2.使用foreach循环遍历输出数组的元素
// 2.1 方式一:
//foreach($arr as $value){
//echo($value."<br/>");
//print($value."<br/>");
//print_r($value."<br/>");
//}
// 2.2 方式二:
foreach($arr as $key=>$value){
//echo($key."----".$value."<br/>");
//print($key."----".$value."<br/>");
print_r($key."----".$value."<br/>");
}
?>
十三. while,do-while循环语句: (例:demo06)
1)while循环的格式:
while(布尔表达式){
语句块;
}
2)do-while循环的格式:(至少执行一次)
do{
语句块;
}while(布尔表达式)
例如:demo06:while与do-while循环输出数组:
<?php
// 1.while循环:
// 1.1.定义一个0-10之间的随机整数:
$num = rand(0,10);
// 1.2.判断随机数是否小于等于5,如果是,就继续随机
/*while($num <= 5){
echo $num."<br/>"; // 输出获取的随机数
$num = rand(0,10);
}
echo "我终于及格了,分数是:".$num;*/
// 2.do-while循环:
// 如果使用while,当条件不满足时,一次都不会执行。
/*while($num >= 20){
echo $num;
}*/
// do-while至少执行一次
do{
echo $num;
}while($num >= 20);
?>
十四. break与continue: (例:demo07)
1)break结束循环。
2)continue跳过本次循环,继续执行下一次循环。
例如:demo07:break与continue的区别:
<?php
for($i=0; $i<10; $i++){
if($i == 5){
/*echo "遇到5,结束循环";
break;*/
echo "遇到5,跳过本次循环"."<br/>";
continue;
}
echo $i."<br/>";
}
?>
十五. 函数的相关概念:
1)函数的定义:一个独立的子程序,能实现一定的功能。能重复使用。
2)函数的分类:
(1)系统定义的标准函数,也称内置函数(PHP发行包中有1000多个标准函数),如:rand (), pow()。
(2)用户自定义的函数。
注意:有些系统函数需要手动开启扩展支持。
十六. 函数的调用与定义:(例:demo01)
(1)多数标准函数可以直接使用,如:
$num = pow(9,3);
echo $num; 或者 echo pow(9,3);
(2)自定义函数的格式:
function 函数名(//参数){
函数体;
// return 返回值;
}
例如:demo01:函数的定义和使用:
<?php
// 1.调用一个函数,输出9的3次方:
//$num = pow(9,3);
//print($num);
//echo pow(8,3)."<br/>";
//echo rand(0,100)."<br/>";
// 2.自定义函数:求出两个数的积
// 2.1.无返回值
function show01($a, $b){
print($a*$b."<br/>");
}
show01(6.1, 8);
// 2.2.有返回值
function show02($a, $b){
return $a*$b;
}
// 调用函数,需要得到一个返回值(东西),后续会使用这个返回值
$result = show02(9,6);
// 使用上面得到的返回值
if($result >=100){
print("结果大于100");
}else{
print("结果小于100");
}
?>
十七. 函数的参数及返回值:
参数:
1)按值传递参数:(略,详见demo01)
2)按引用传递参数:(例:demo02)
3)按默认值传递参数:
返回值:分为单个返回值和多个返回值:(例:demo03)
例如:demo02:函数的参数传递
<?php
// 要求:定义一种方法,计算某一类商品的成本价格
// 出厂价100元,税率17%,利润20%
// 成本价格 = 出厂价 + 出厂价*(税率+利润)
// 1.按引用传递参数:
// 设置两个参数:
$price = 100; $tax = 0.17; $profit = 0.2;
// 定义函数
function show(&$price, $tax, $profit){
$price = $price + $price*($tax+$profit);
return $price;
}
echo show($price, $tax, $profit)."<br/>"; // 一级经销商的成本价
echo show($price, $tax, $profit)."<br/>"; // 二级经销商的成本价
echo show($price, $tax, $profit)."<br/>"; // 三级经销商的成本价
// 2.使用默认参数:税率17%和利润20%设置成默认值
// $price = 100;
// function show(&$price, $tax=0.17, $profit=0.15){
// $price += $price*($tax+$profit);
// return $price;
// }
// echo show($price)."<br/>"; // 一级经销商的成本价
// echo show($price)."<br/>"; // 二级经销商的成本价
// echo show($price)."<br/>"; // 三级经销商的成本价
?>
例如:demo03:函数的多个返回值情况
<?php
// 多个返回值的情况:
// 定义一个函数,返回随机生成的3个0-10的整数
function getNums(){
$arr[0] = rand(0,10); // 定义一个数组,用于存储产生的随机数
$arr[1] = rand(0,10);
$arr[2] = rand(0,10);
return $arr;
}
print_r(getNums());
?>
十八. 变量函数:
如果一个变量名后面有(),程序会自动寻找与之同名的函数。变量函数只能自己单独使用,不能与其他语言结构混合,如:echo(),include()等。(例:demo04)
例如:demo04:变量函数
<?php
// 变量函数:
// 如果一个变量名后面有(),程序会自动寻找与之同名的函数。
function show(){
print("我是show()函数");
}
$add = "show"; // 定义变量add,其值是'show'字符串
$add();
echo "<br/>";
echo $add;
?>
十九. PHP的工具函数 (例:demo05:演示exit(),isset(),is_numeric())
1)exit()或die() 结束程序并执行输出参数。
2)empty() 判断是否为0或者空值,如果是就返回true,否则返回false。
3)isset() 如果变量已经设定值就返回true,否则返回false。
4)unset() 将已有变量的值删除,让其变成未定义undefined。
5)eval() 将字符串当做代码执行。
6)is_bool() 判断变量的数据类型是否为boolean值。
6)is_array() 判断是否为数组。
6)is_numeric() 判断变量的是否为数字或数字字符串。
6)in_array() 判断变量是否存在于数组中。
例如:demo05:工具函数:演示exit(),isset(),is_numeric()
<?php
// 1.exit()或die() 结束程序并执行输出参数
// 格式演示,不会显示内容
//mysql_connect("localhost","root","root","数据库名") or exit("连接失败");
// 2.isset() 如果变量已经设定值就返回true,否则返回false
$a = 10;
if(isset($a)){
echo "变量已经赋值<br/>";
}else{
echo "变量没有被赋值<br/>";
}
// 3.is_numeric()
$b = "20";
echo is_numeric($a)."<br/>";
echo is_numeric($b)."<br/>";
?>
二十. 数学函数 (例:demo06)
1)rand() 返回指定范围内的随机整数
2)ceil() 向上取整 floor()向下取整
3)abs()取绝对值 round()四舍五入
4)max()求最大值 min()求最小值
5)decbin()十进制转二进制
6)dechex()十进制转十六进制
7)decoct()十进制转八进制
例如:demo06:数学函数:
<?php
/*
1)rand() 返回指定范围内的随机整数
2)ceil() 向上取整 floor()向下取整
3)abs()取绝对值 round()四舍五入
4)max()求最大值 min()求最小值
5)decbin()十进制转二进制
6)dechex()十进制转十六进制
7)decoct()十进制转八进制
*/
echo rand(0,200)."<br/>";
echo ceil(17.678)."<br/>";
echo floor(20.999)."<br/>";
echo abs(-12.5)."<br/>";
echo round(5.5001)."<br/>";
echo max(15, 60, -1, 200)."<br/>";
echo min(15, 60)."<br/>";
echo decbin(10)."<br/>";
echo dechex(10)."<br/>"; // 0~9 a~f
echo decoct(10)."<br/>";
?>
二十一. 时间和日期函数 (例:demo07)
1)date() 格式化本地时间/日期
2)getdate() 取得日期/时间信息,分析出年月日等信息
3)gettimeofday()取得当前时间(显示毫秒值)
4)gmdate()格式化一个GMT/UTC日期和时间(格林尼治时间)
5)checkdate()验证时间是否有效
例如:demo07:时间和日期函数:
<?php
/*
1)date() 格式化本地时间/日期
2)getdate() 取得日期/时间信息,分析出年月日等信息
3)gettimeofday()取得当前时间(显示毫秒值)
4)gmdate()格式化一个GMT/UTC日期和时间(格林尼治时间)
5)checkdate()验证时间是否有效
*/
echo date("Y-m-d")."<br/>";
echo date("Y-m-d h:i:s")."<br/>";
echo gmdate("Y-m-d h:i:s")."<br/>"; // 格林尼治时间
print_r(gettimeofday("Y-m-d h:i:s")); // 显示毫秒值
?>
二十二. 字符串处理函数 (例:demo08:演示常用方法)
1)join, implode 将数组元素合并为字符串
2)htmlentities, htmlspecialchars 将HTML特殊字符转换为HTML标记形式
3)str_split 将字符串分割到数组中,可以设置每次截取的长度
4)strstr 查找一个字符串是否在另一个字符串中
5)trim, ltrim, rtrim 去掉字符串的左右空格 (left right)
6)explode 使用一个字符串分割另一个字符串,返回一个数组
7)count_chars 返回字符串所用字符的信息
8)strops 查找特定字符串在源字符串中的位置
9)strlen 获取字符串的长度
10)substr(字符串,开始的索引,长度) 截取字符串
例如:demo08:字符串处理函数:
<?php
/*
1)join, implode 将数组元素合并为字符串
2)htmlentities, htmlspecialchars 将HTML特殊字符转换为HTML标记形式
3)str_split 将字符串分割到数组中
4)strstr 查找一个字符串是否在另一个字符串中
5)trim, ltrim, rtrim 去掉字符串的左右空格
6)explode 使用一个字符串分割另一个字符串,返回一个数组
7)count_chars 返回字符串所用字符的信息
8)strops 查找特定字符串在源字符串中的位置
9)strlen 获取字符串的长度
10)substr(字符串,开始的索引,长度) 截取字符串
*/
// 1)join, implode 将数组元素合并为字符串
//$arr = array("中国","云南省","昆明市","盘龙区");
//echo join("",$arr)."<br/>";
//echo implode("--",$arr);
// 3)str_split 将字符串分割到数组中
$address = str_split("helloWorld"); // 不能分割汉字,每个汉字3个字符。
print_r($address);
$address02 = str_split("helloWorld",2); // 数字表示每次分割的长度
print_r($address02);
// 4)strstr 查找一个字符串是否在另一个字符串中。
// 如果存在,就返回从该字符串开始,直到源字符串结束的值。(类似于截取字符串)
echo strstr("abcdefg","cd")."<br/>";
echo strstr("abcdefg","e");
// 6)explode 使用一个字符串分割另一个字符串,返回一个数组
$str = "我来自-云南省-昆明市";
print_r(explode("-",$str));
// 9)strlen 获取字符串的长度
$school = "云南林业职业技术学院";
$school = "yunnan123";
print(strlen($school));
// 10)substr(字符串,开始的索引,长度) 截取字符串
print(substr("abcdefghijklmn", 5, 3));
?>
二十三. 数组的理解:(例:demo01)
PHP中的数组可以属于不同类型。每个数组实体包含两个项:键key和值value。可以通过查询键来获取相应的值。键与值没有真正的联系,只是表示某个值在数组中的位置。使用数组的索引,可以获取对应位置的值。如果不写关联的键,默认以索引作为键。如果里面的元素又需要包含多个值,可以使用二维数组或者多维数组。
例如:
数组的基本格式:$arr = array(0=>“张三”, 1=>“李四”,2=>“王五”);
获取数组的值:$arr[0]……
例如:demo01:
<?php
// 1.没有关联键的数组:
//$arr01 = array("昆明","曲靖","弥勒","大理");
//print_r($arr01);
//echo "<br/>";
// 2.有关联键的数组:
//$arr02 = array("KM"=>"昆明","QJ"=>"曲靖","ML"=>"弥勒","DL"=>"大理");
//print_r($arr02);
// 3.二维数组
$arr03 = array(
"昆明"=>array("官渡区","盘龙区","西山区"),
"曲靖"=>array("A区","B区","C区"),
"弥勒"=>array("D区","E区","F区"),
"大理"=>array("G区","H区","I区")
);
print_r($arr03);
?>
二十四. 数组的创建:(例:demo02)
1)指定索引创建:$arr[0] = “张三”; $arr[1] = “李四”;
2)不写索引创建:$arr[] = “张三”; $arr[] = “李四”;
3)关联键的写法:$arr[“zs”] = “张三”; $arr[“ls”] = “李四”;
4)通过array进行创建:
$arr = array(“张三”, “李四”,“王五”);
或者: $arr = array(0=>“张三”, 1=>“李四”,2=>“王五”);
5)使用range()方法快速创建数组。
可以定义数字,字母等与ASCII编码相关的数组。
格式:array range(low, high, [step]);
low:起始, high:终点, step:间隔
Eg: $nums = range(1,5); // $nums = array(1,2,3,4,5);
$nums = range(0,10,2); // $nums = array(0,2,4,6,8,10);
$letters = range(A,G);
例如:demo02:
<?php
// 使用range()方法创建数组:
// 1.默认排序方式:
//$num01 = range(5,10);
//print_r($num01);
//echo "<br/>";
// 2.间隔方式:
//$num02 = range(10,1,3);
//print_r($num02);
//echo "<br/><br/>";
// 3.默认排序方式,创建字母数组:
//$arr01 = range("a","h");
//print_r($arr01);
//echo "<br/>";
// 4.间隔方式,创建字母数组:
//$arr02 = range("A","J",3);
//print_r($arr02);
// 课堂练习:0-10000之间能被179整除的数,倒叙排列,并遍历出来
// array_reverse(数组名) :将数组的元素倒叙排列。
$num = range(0,10000,179);
$num01 = array_reverse($num);
foreach($num01 as $key=>$val){
print($key."---".$val."<br/>");
}
?>
二十五. 数组元素的添加和删除:(注意:添加时不能使用关联键)
1)(例:demo03)
array_unshift():在数组头部添加元素。已有的数值键会相应修改,但是关联键不受影响。
array_shift():删除并返回数组中对应的元素(默认是第一个元素)。如果是数值键,则所有相应的值都会下移,但是关联键不受影响。
例如:demo03:
<?php
// 无关联键的数组:
$stu = array("周星驰","谢霆锋","刘德华");
print_r($stu);
echo "<br/>";
// 1.array_unshift():在数组头部添加元素。
array_unshift($stu, "鹿晗");
print_r($stu);
// 2.array_shift():删除并返回数组中对应的元素(默认是第一个元素)。
array_shift($stu);
array_shift($stu);
print_r($stu);
// 有关联键的数组:
/*$stu = array("zxc"=>"周星驰","xtf"=>"谢霆锋","ldh"=>"刘德华");
print_r($stu);
echo "<br/>";
// 3.array_unshift():在数组头部添加元素。
array_unshift($stu, "鹿晗");
print_r($stu);
// 4.array_shift():删除并返回数组中对应的元素(默认是第一个元素)。
array_shift($stu);
array_shift($stu);
print_r($stu);
*/
?>
2)(例:demo04)
array_push():将元素添加到数组的末尾。成功就返回true,失败返回false。可以一次性添加多个元素。
array_pop():删除并返回数组的最后一个元素。
例如:demo04:
<?php
// 无关联键的数组:
$stu = array("周星驰","谢霆锋","刘德华");
print_r($stu);
echo "<br/>";
// 1.array_push():将元素添加到数组的末尾。
array_push($stu, "迪丽热巴");
print_r($stu);
// 2.array_pop():删除并返回数组的最后一个元素。
array_pop($stu);
print_r($stu);
// 有关联键的数组:
//$stu = array("zxc"=>"周星驰","xtf"=>"谢霆锋","ldh"=>"刘德华");
//print_r($stu);
//echo "<br/>";
// 3.array_push():将元素添加到数组的末尾。
//array_push($stu, "迪丽热巴");
//print_r($stu);
// 4.array_pop():删除并返回数组的最后一个元素。
//array_pop($stu);
//print_r($stu);
?>
二十六. 定位数组元素
1)搜索数组元素(例:demo05) 注意:此三种方法只会返回true或false
in_array():在数组中搜索一个特定的值。
格式:in_array(“搜索的值”,数组名)
array_key_exists():在数组中搜索一个指定的键。
格式:array_key_exists(“搜索的键”,数组名)
array_search():在数组中搜索一个特定的值。(与in_array()类似)
格式:array_search(“搜索的值”,数组名)
例如:demo05:
<?php
// 1.in_array():在数组中搜索一个特定的值。
$city = array("北京","上海","广州");
$flag = in_array("上海66",$city);
echo $flag;
if($flag){
echo "你所搜索的值存在";
}else{
echo "你所搜索的值不存在";
}
// 2.array_key_exists():在数组中搜索一个指定的键。
$city = array("bj"=>"北京","sh"=>"上海","gz"=>"广州");
$flag = array_key_exists("gzz",$city);
if($flag){
echo "你所搜索的键存在";
}else{
echo "你所搜索的键不存在";
}
// 3.array_search():在数组中搜索一个特定的值。
/*$city = array("bj"=>"北京","sh"=>"上海","gz"=>"广州");
$flag = array_search("北京",$city);
if($flag){
echo "你所搜索的键存在";
}else{
echo "你所搜索的键不存在";
}*/
?>
2)获取数组多个键:(例:demo06)
array_keys():返回一个数组,里面包含所搜索数组中的所有键。
3)获取数组多个值:
array_values():返回一个数组,里面包含所搜索数组中的所有值,并自动提供索引。
例如:demo06:
<?php
$city = array("bj"=>"北京","sh"=>"上海","gz"=>"广州");
// 1.array_keys():返回一个数组,里面包含所搜索数组中的所有键。
$cityKeys = array_keys($city);
print_r($cityKeys);
echo "<br/>";
// 2.array_values():返回一个数组,里面包含所搜索数组中的所有值,并自动提供索引
$cityValues = array_values($city);
print_r($cityValues);
?>



















暂无评论内容