本文最后更新于:2021年10月3日 晚上
🌈入坑PHP(一)
💠PHP基础
PHP基本语法
标准风格
⭕注意:如果一个文件里面全部都是PHP代码,推荐省略结束语句?>
。
PHP的注释
PHP的变量
PHP的变量不用声明就能够直接定义与使用
1 2 3 4 5 6
| <?php $txt="php 在这里"; $a=5; $b=10.5; $c=$a+$b; ?>
|
⭕变量声明与创建的注意事项
- 变量必须以 $ 符号开始,后面跟着变量的名称
- 变量名必须以字母或者下划线字符开始,不能是数字
- 变量名只能包含字母、数字以及下划线(A-z、0-9 和 _ )
- 变量名不能包含空格
- 变量名是区分大小写的($y 和 $Y 是两个不同的变量)
值传递
1 2 3 4 5
| <?php $num1=10; $num2=$num1; $num2=20; echo $num1;
|
地址传递使用
&
表示获取变量的地址
1 2 3 4 5
| <?php $num1=10; $num2=&$num1; $num2=20; echo $num1;
|
销毁变量
只销毁变量名不销毁变量值,变量值由PHP垃圾回收机制销毁(没有变量引用的值就是)
PHP函数的写法
1 2 3 4 5 6 7 8 9
| <?php
function ([可声明变量,这个可以为空]) { } [函数名]([可声明的变量值,这个可以为空]);
?>
|
PHP的输出函数
echo
函数和print
函数,它们是作用基本上相同,用法也都差不多,只能输出数值跟字符串
echo
函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <?php echo "<h2>我这里可以放HTML句子</h2>"; echo "By ERHE.GROUP<br>"; echo "HTML中的转义符正常用<br>"; echo "我是", "一句", "话", ",", "但是", "被分开了。";
$a1=520; $txt1="erhe.group"; echo "我喜欢的数字是 $a1"; echo "<br>"; echo "我的网页是:$txt1"; echo "<br>"; echo ("要不要一起开发: $txt1"); ?>
|
print
函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <?php print "<h2>我这里可以放HTML句子</h2>"; print "By ERHE.GROUP<br>"; print "HTML中的转义符正常用<br>";
$a1=520; $txt1="erhe.group"; print "我喜欢的数字是 $a1"; print "<br>"; print "我的网页是:$txt1"; print "<br>"; print ("要不要一起开发: $txt1"); ?>
|
⭕注意:print
不能输出多个文本的组合,echo
可以
print:输出成功后成功返回1
print_r():输出数组
var_dump():输出数据的详细信息,并且带有数据类型和长度
PHP EOF定义字符串
PHP EOF的基本格式
1 2 3 4 5 6 7
| <?php echo <<<EOF <h1>标题</h1> <p>段落</p> EOF;
?>
|
- 必须后接分号,否则编译通不过。
- EOF 可以用任意其它字符代替,只需保证结束标识与开始标识一致。
- 结束标识必须顶格独自占一行(即必须从行首开始,前后不能衔接任何空白和字符)。
- 开始标识可以不带引号或带单双引号,不带引号与带双引号效果一致,解释内嵌的变量和转义符号,带单引号则不解释内嵌的变量和转义符号。
- 当内容需要内嵌引号(单引号或双引号)时,不需要加转义符,本身对单双引号转义,此处相当与a和aa的用法。
❇️PHP常量
PHP定义常量
常量就是在整个运行过程中,固定不变的值,常量不带$
,推荐一般情况下常量名为大写
定义方法
1
| define('变量名','值',[变量名大小写区分可指定true、false(默认)])
|
正常情况下不能用特殊字符做变量名,但是可使用constant
来获取特殊字符定义的值
1 2 3
| <?php define('*.*','erhe'); echo '这个网站是',constant('*.*');
|
也可以使用const
来定义常量
1 2 3
| <?php const WEB='Erhe Web'; echo WEB;
|
常量一旦被定义,不能再被重新定义
判断常量是否定义,通过defined()
判断常量是否已经定义
1 2 3 4 5 6
| <?php define('WEB','erhe'); if(!defined('WEB')){ define('WEB','erhe by wss'); } echo WEB;
|
PHP预定义常量
1 2 3 4 5
| PHP_EOL PHP_VERSION; PHP_OS; PHP_INT_MAX;
|
PHP预定义魔术常量
魔术常量的值,随着它们在代码中的位置改变而改变
1 2 3
| __LINE__; __FILE__; __DIR__;
|
🔣PHP的数据类型
数据类型有两种:强类型和弱类型
PHP是弱类型数据,但是在PHP7.0以后就支持强类型数据
基本类型(标量类型)
整型
- 整数必须至少有一个数字 (0-9)
- 整数不能包含逗号或空格
- 整数是没有小数点的
- 整数可以是正数或负数
- 整型可以用三种格式来指定:十进制, 十六进制( 以 0x 为前缀)或八进制(前缀为 0)
- 最大的整数不超过(32位为例):-2的31次方到2的31次方-1,如果超过了这个范围就自动转变成浮点数
1 2 3 4 5 6 7 8 9 10 11 12
| <?php $x = 5201314; var_dump($x); echo "<br>"; $x = -119; var_dump($x); $a1 = 10; $a2 = 010; $a3 = 0x10; echo $a1,'<br>'; echo $a2,'<br>'; echo $a3,'<br>';
|
PS:var_dump
函数返回变量的数据类型和值
进制转换
进制 |
缩写 |
单词 |
十进制 |
dec |
decimalist |
二进制 |
bin |
binary |
八进制 |
oct |
octonary |
十六进制 |
hex |
hexdecimalist |
PHP进制转换机制
1 2 3 4 5 6
| <?php echo decbin(123),'<br>'; echo bindec(1111011),'<br>'; echo dechex(123),'<br>'; echo hexdec('7b'),'<br>'; echo decoct(123);
|
浮点型
- 浮点数是带小数部分的数字,或是指数形式
- 浮点数在内存中保存的是近似值,不能直接参与数据大小的比较
1 2 3
| <?php $x = 3.14; var_dump($x);
|
若要比较浮点数,必须要确定比较的位数
1 2
| <?php var_dump(bccomp(3.14,3.141,[这里指定比较的小数点后面的位数]));
|
结果的判定:如果两个数相等返回0,左边的数left_operand比较右边的数right_operand大返回1,否则返回-1
布尔型
布尔型只有TRUE和FALSE,它的结果不能使用echo
和print
进行输出,要用var_dump()
来进行输出。
字符串
可以将任何文本放在单引号和双引号中
1 2 3 4 5 6 7 8
| <?php $a = "Welcome ERHE!"; echo $a; echo "<br>"; $c = 'blog'; echo $c; var_dump($c); ?>
|
单双引号的区别
单引号是真正的字符串,双引号要解析字符串当中的变量
1 2 3 4
| <?php $Web='erhe'; echo '我的网站是$Web','<br>'; echo "我的网站是$Web",'<br>';
|
⭕注意:变量名跟其他字符串用{}
分开,{}
表示获取变量的值
1 2 3 4 5
| <?php $Web='erhe'; echo "{$Web}是我的网站",'<br>'; echo "${Web}是我的网站",'<br>'; echo "$Web是我的网站",'<br>';
|
转义字符
1 2 3
| <?php echo '我说:\'大家好!\'','<br>'; echo '文件保存在c:\\';
|
字符串定界符
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| <?php $test1='定界符,heredoc形式,类似于(双引号)'; echo <<<suibian $test1 <br> <strong>这个网站是</strong><br> <em>Erhe的</em><br> <u>一个博客网站</u><br> <hr> suibian;
$test2='定界符,nowdoc形式,类似于(单引号)'; echo <<<'suibian' $test2 <br> <strong>这个网站是</strong><br> <em>Erhe的</em><br> <u>一个博客网站</u><br> <hr> suibian; ?>
|
由<<<
后面跟上标识符,要首位呼应,标识符命名规则跟变量的命名规则一样,最后结尾的时候要顶格写。
数组
数组也是变量,一个变量可以保存多个同类型的数据,只是在内存中这个变量具有连续的空间
索引数组
用整数做下标,默认从0开始(可指定),后面依次加一
1 2 3 4 5 6 7 8 9 10 11
| <?php print '索引数组<br>'; $cars=array("Welcome","By","Erhe","Blog");
print_r($cars); echo '<br><hr>'; var_dump($cars); echo '<br><hr>'; echo $cars[0],'<br>'; echo $cars[2],'<br>'; ?>
|
关联数组
用字符串做下标,通过=>符号将下标和值关联起来
1 2 3 4 5 6 7 8 9
| <?php print '关联数组<br>'; $empc=array('name'=>'Welcome','sex'=>'Erhe','orc'=>'Blog'); echo $empc['name'],'<br>'; echo $empc['sex'],'<br>'; print_r($empc); echo '<br><hr>'; var_dump($empc); ?>
|
数组的下标
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <?php print '被指定的索引数组<br>'; $shutd=array(1=>"Welcome","By","Erhe","Blog"); print_r($shutd); echo '<br><hr>'; $shutdo=array("Welcome",3=>"By","Erhe",10=>"Blog",'group'); print_r($shutdo); echo '<br><hr>'; $shutdow=array("Welcome",5=>"By",'name'=>"Erhe","Blog"); print_r($shutdow); echo '<br><hr>'; $shutdown=array(1=>"Welcome",1=>"By",1=>"Erhe","Blog"); print_r($shutdown); ?>
|
数组的下标只能是正整数和字符串
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| <?php $a1[true]='aa'; print_r($a1); echo '<br><hr>'; $b1[false]='bb'; print_r($b1); echo '<br><hr>'; $c1[12.9]='cc'; print_r($c1); echo '<br><hr>'; $d1[-10]='dd'; print_r($d1); echo '<br><hr>'; $e1[-12.3]='ee'; print_r($e1); echo '<br><hr>'; $f1['10']='ff'; print_r($f1); echo '<br><hr>'; $g1[]='gg'; print_r($g1); echo '<br><hr>'; $h1[null]='hh'; print_r($h1); ?>
|
短数组语法
可以直接使用中括号来声明属组
1 2 3 4 5
| <?php print '索引数组<br>'; $cars=array("Welcome","By","Erhe","Blog"); print_r($cars); ?>
|
数组的赋值
⭕注意:这个是适用于PHP7.1以上的版本
1 2 3 4 5 6
| <?php $num1=10; $num2=20; [$num1,$num2]=[$num2,$num1]; echo $num1,'<br><hr>',$num2; ?>
|
二维数组的声明
1 2 3 4 5 6 7 8 9 10
| <?php $erhetwo=[ ["Welcome","By","Erhe","Blog"], ['name'=>'Welcome','sex'=>'Erhe','orc'=>'Blog'] ]; print_r($erhetwo); echo '<br><hr>'; echo'<pre>'; print_r($erhetwo); ?>
|
字符串与数组
⭕注意:这个是适用于PHP7.1以上的版本
1 2 3 4
| <?php echo 'erheblog'[0],'<br>'; echo 'erheblog'[-1],'<br>'; ?>
|
数据类型转换
自动类型的转换
当提供的类型和需要的类型不一致的时候会自动进行类型转换
1 2 3 4 5 6 7 8 9 10
| <?php $num=10; if($num){ echo 'aa'; }else{ echo 'bb'; } echo '<br><hr>'; echo '20'-10; ?>
|
强制类型转换
语法:(数据类型)数据
1 2 3 4
| <?php $num=12; var_dump($num,(int)$num,(float)$num); ?>
|
其他类型与布尔之间的转换
规则:0、空为假,非0、非空为真
- 数字转换规律:0为false,非0为true
- 字符串数组转换规则:0和空是false,其他是true
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| <?php var_dump((bool)'abc'); echo '<br><hr>'; var_dump((bool)''); echo '<br><hr>'; var_dump((bool)'0'); echo '<br><hr>'; var_dump((bool)'0.0'); echo '<br><hr>'; var_dump((bool)'00'); echo '<br><hr>'; var_dump((bool)'false'); echo '<br><hr>'; var_dump((bool)'null'); echo '<br><hr>'; var_dump((bool)1); echo '<br><hr>'; var_dump((bool)0); echo '<br><hr>'; var_dump((bool)-10); echo '<br><hr>'; var_dump((bool)0.0); echo '<br><hr>'; var_dump((bool)array()); echo '<br><hr>'; var_dump((bool)array(1)); echo '<br><hr>'; var_dump((bool)array(false)); echo '<br><hr>'; var_dump((bool)null); echo '<br><hr>'; ?>
|
#️⃣PHP的运算符
算术运算符
一元运算符 |
二元运算符 |
++ |
+ |
– |
- |
|
* |
|
、 |
|
% (取余) |
⭕注意:在PHP中。算术运算符只能做数学运算。
1 2 3 4 5
| <?php echo '10'+'20','<br><hr>'; echo '10ab'+'20cd','<br><hr>'; echo 'ab10'+'cd20','<br><hr>'; ?>
|
++后置:先运算再自增
1 2 3 4
| <?php $suma=10; echo $suma++; ?>
|
++前置:先自增再运算
1 2 3 4
| <?php $suma=10; echo ++$suma; ?>
|
关系(比较)运算符
1 2 3 4 5 6 7 8 9
| > >= < <= == != === !== .
|
逻辑运算符
用来连接两个比较运算符
1 2 3 4 5 6 7
| <?php $a=5; if($a>10 && ++$a>20) echo 'erhe.group'; echo $a; ?>
|
1 2 3 4 5 6 7
| <?php $a=5; if($a<10 || ++$a>20) echo 'erhe.group'; echo $a; ?>
|
赋值运算符
字符串连接符
1 2 3 4
| <?php echo 'aa'.'bb'; echo 'aa','bb'; ?>
|
错误抑制符
错误抑制符只对表达式有效
1 2 3 4 5
| <?php echo $erhe+$group; echo '<br>','<hr>'; echo @($erhe+$group); ?>
|
三元运算符
语法:表达式?值1:值2
表达式的值为true,或者是1返回值1,否则返回值2
1 2 3 4
| <?php $erhe=10; echo $erhe%2?'奇数':'偶数'; ?>
|
null合并运算符
⭕注意:这个是适用于PHP7.0以上的版本
1 2 3 4 5 6
| <?php $data1=321; echo $data1??'数据未知!'; echo '<br>','<hr>'; echo $data2??'数据未知!'; ?>
|
判断变量是否为设置函数
PS:变量是否无为空的定义,就是变量的值在转成布尔型的值时候,显示的结果为false的全部为空。
✅PHP的判断
语法
单分支
双分支
多分支
1 2 3 4 5 6 7
| if(条件1){ }elseif(条件2){ }else { }
|
多路选择
1 2 3 4 5 6 7 8
| case 常量: break; case 常量: break; default:
|
应用实例
判断是否为闰年(练习单分支)
步骤:
代码实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>判断是否为闰年</title> </head> <body> <?php if(!empty($_POST)){ // 判断$_POST是否为空,不为空就提交了数据 $year=$_POST['year']; // 获取年份 echo $year; if($year==''){ echo '您没有输入年份!'; }else{ if(is_numeric($year)){ // 判断$year是否是数字或字符串数字 $year+=0; // 将字符串数字转成数字型 if(is_int($year)){ // is_int用来检测变量是否是整形 if($year<1){ echo '您输入的年份必须是正整数'; }else{ if($year%4==0 && $year%100!=0 || $year%400==0){ echo "{$year}是闰年"; }else{ echo "{$year}是平年"; } } }else{ echo '您输入的不是整数'; } }else{ echo '您输入的不是数字'; } } } ?> <from method="post" action=""> 请输入年份:<input type="text" name="year"> <br /> <input type="submit" name="button" value="判断闰年"> </from> </body> </html>
|
小结:
$_POST
是一个变量,用来保存post提交的数据
action=""
表示将数据提交到本页面
is_numeric()
用来判断变量是否是数字或字符串数字
is_int()
判断变量是否是整形
if else
后面如果只有一句代码,大括号可以省略
判断成绩(练习多分支)
目标:输入语文和数学判断等级
代码实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>判断成绩</title> </head> <body> <?php if (isset($_POST['button'])){ // 判断$_POST是否为空,不为空就提交了数据 $ch=$_POST['ch']; // 获取语文成绩 $math=$_POST['mach']; // 获取数学成绩 if($ch=='' || !is_numeric($ch) || $ch<0 || $ch>100){ echo '语文成绩必须在0-100之间'; } elseif($math='' || !is_numeric($math) || !($math>=0 && $math<=100)){ echo '数学成绩必须在0-100之间'; }else { $avg=($ch+$math)/2; echo "您的平均分是:{$avg}<br>"; if($avg>=90) echo 'A'; elseif($avg>80) echo 'B'; elseif($avg>=70) echo 'C'; elseif($avg>=60) echo 'D'; else echo 'E'; } } ?> <from method="post" action=""> 语文:<input type="text" name="ch"> <br /> 数学:<input type="text" name="math"> <br /> <input type="submit" name="button" value="判断成绩"> </from> </body> </html>
|
更改颜色(练习swich-case)
目标:选择颜色,将文字的颜色改成选择的颜色
代码实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>更改颜色</title> </head> <body> <?php if(isset($_POST['button'])){ switch($color=$_POST['color']){ case '1': $color='#ff0000'; break; case '2': $color='#009900'; break; case '3': $color='#0000ff'; break; default: $color='#000000'; } echo <<<str <script type="text/Javascript"> window.onload=function(){ document.getElementById('shi').style.color='$color'; } </script> str; } ?> <div id="shi"> 锄禾日当午,<br /> 汗滴禾下土。<br /> 谁知盘中餐,<br /> 粒粒皆辛苦。<br /> </div> <from method="post" action=""> <select name="color"> <option value="0">请选择颜色</option> <option value="1">红色</option> <option value="2">绿色</option> <option value="3">蓝色</option> </select> <input type="submit" name="button" value="更改颜色"> </from> </body> </html>
|
计算器
目标:实现一个网页计算器
代码实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>计算器</title> </head> <body> <?php $num1=''; // $num1的初始值 $num2=''; // $num2的初始值 $op=''; $result=''; if(!empty($_POST)){ $num1=$_POST['num1']; $num2=$_POST['num2']; $op=$_POST['op']; // 操作符 switch($op){ case '+': $result=$num1+$num2; break; case '-': $result=$num1-$num2; break; case '*': $result=$num1*$num2; break; case '/': $result=$num1/$num2; break; } } ?> <from method="post" action=""> <input type="text" name="num1" value='<?php echo $num1?>'> <select name="op"> <option value="+" <?php echo $op=='+'?'selected':''?>>+</option> <option value="-" <?php echo $op=='-'?'selected':''?>>-</option> <option value="*" <?php echo $op=='*'?'selected':''?>>*</option> <option value="/" <?php echo $op=='/'?'selected':''?>>/</option> </select> <input type="text" name="num2" value='<?php echo $num2?>'> <input type="submit" name="button" value="="> <input type="text" name="result" value='<?php echo $result?>'> </from> </body> </html>
|
♻️PHP循环
基本循环语句
for循环
基本语法
⭕注意:循环中千万不能出现死循环
死循环案例1
1 2 3 4 5
| <?php for($i=1;$i<10;$i--){ echo "{$i}:开始了死循环喂!<br><hr>"; } ?>
|
死循环案例2
1 2 3 4 5
| <?php for($i=1;$i<10;){ echo "{$i}:开始了死循环喂!<br><hr>"; } ?>
|
死循环案例3
1 2 3 4 5
| <?php for($i=1;;$i++){ echo "{$i}:开始了死循环喂!<br><hr>"; } ?>
|
死循环案例4
1 2 3 4 5
| <?php for(;;){ echo "{$i}:开始了死循环喂!<br><hr>"; } ?>
|
循环理论:
在循环N次的循环体中,初始值执行了1次,条件执行了N+1次,增量执行了N次。在循环执行完毕后,变量的值($i)是存在的。
while循环
基本语法
do-while循环
基本语法
PS:
- for、while、do-while可相互替换
- 如果明确知道循环多少次首选for
- 如果要循环到条件不成立为止选while或者是do-while
- 先判断再执行选while,先执行再判断选do-while
- while循条件不成立就不执行,do-while循环条件不成立至少执行一次
foreach循环
foreach循环是用来遍历数组,相似于for-in循环。
基本语法一
基本语法二
1 2 3
| foreach(数组 as 键=>值){ }
|
switch循环
基本语法
1 2 3 4 5 6 7 8 9 10 11
| switch(变量){ case [条件]: break; case [条件]: break; default: }
|
PS:虽然只执行一次,但它也属于一种循环
基本循环实战
实现功能:实现从1加到100
for循环
1 2 3 4 5 6 7
| <?php $sum=0; for($i=1;$i<=100;$i++){ $sum+=$i; } echo $sum; ?>
|
while循环
方法一
1 2 3 4 5 6 7 8 9
| <?php $i=1; $sum=0; while($i<=100){ $sum+=$i; $i++; } echo $sum; ?>
|
方法二
1 2 3 4 5 6 7 8
| <?php $i=1; $sum=0; while($i<=100){ $sum+=$i++; } echo $sum; ?>
|
do-while循环
方法一
1 2 3 4 5 6 7 8 9
| <?php $i=1; $sum=0; do{ $sum+=$i; $i++; }while($i<=100); echo $sum; ?>
|
方法二
1 2 3 4 5 6 7 8
| <?php $i=1; $sum=0; do{ $sum+=$i++; }while($i<=100); echo $sum; ?>
|
方法三
1 2 3 4 5 6 7 8
| <?php $i=1; $sum=0; do{ $sum+=$i; }while(++$i<=100); echo $sum; ?>
|
PS:结合++前置和++后置考虑逻辑
foreach循环
方式一
1 2 3 4 5 6
| <?php $stu=["Welcome","By","Erhe","Blog"]; foreach($stu as $v){ echo $v,"<br><hr>"; } ?>
|
方式二
1 2 3 4 5 6
| <?php $stu=["Welcome","By","Erhe","Blog"]; foreach($stu as $k=>$v){ echo "{$k}:{$v}","<br><hr>"; } ?>
|
多语句表达式
目的:初始值、增量可以由多条语句组成
实现功能:数字分解
1 2 3 4 5
| <?php for($i=1,$j=9;$i<=$j;$i++,$j--){ echo "10可以分成{$i}和{$j}<br>"; } ?>
|
PS:初始值、增量可以写多个表达式,但是条件一般只写一个,如果条件写多个,只是最后一个条件起作用
双重循环
实现功能:打印阶梯数字
1 2 3 4 5 6 7 8
| <?php for($i=1;$i<=9;$i++){ for($j=1;$j<=$i;$j++){ echo $j,' '; } echo '<br>'; } ?>
|
实现功能:打印九九乘法表
1 2 3 4 5 6 7 8
| <?php for($i=1;$i<=9;$i++){ for($j=1;$j<=$i;$j++){ echo $i,'*',$j,'=',$i*$j,' '; } echo '<br>'; } ?>
|
变好看后
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| <style type="text/css"> table{ width:980px; } table,td{ border:solid 1px #0000FF; border-collapse:collapse; } td{ height:40px; } </style>
<table> <?php for($i=1;$i<=9;$i++){ echo '<tr>'; for($j=1;$j<=$i;$j++){ echo "<td>{$i}*{$j}=",($i*$j),'</td>'; } echo '</tr>'; } ?> </table>
|
🦿PHP跳转语句
break
中断循环
1 2 3 4 5 6 7
| <?php for($i=1;$i<10;$i++){ echo "{$i}:Welcome","Erhe","Blog!<br><hr>"; if($i==5) break; } ?>
|
1 2 3 4 5 6 7
| <?php for($i=1;$i<10;$i++){ if($i==5) break; echo "{$i}:Welcome","Erhe","Blog!<br><hr>"; } ?>
|
中断多重循环
1 2 3 4 5 6 7 8 9 10 11
| <?php for($i=1;$i<=9;$i++){ for($j=1;$j<=$i;$j++){ echo $j,' '; if($j==5){ break 2; } } echo '<br>'; } ?>
|
continue
中断当前循环,进入下一个循环
1 2 3 4 5 6 7
| <?php for($i=1;$i<10;$i++){ if($i==5) continue; echo "{$i}:Welcome","Erhe","Blog!<br><hr>"; } ?>
|
PS:break和continue默认中断、跳出1重循环,如果调中断、跳出多重循环,在后面加一个数字。
🎭PHP代替语法
PHP中,除了do-while以外,其他的语法结构都有替代语法
规则:左大括号变冒号,又大括号变endxxx
基本代替语法
if的代替语法
1 2 3 4 5
| if(): elseif(): else: endif;
|
switch的代替语法
for的代替语法
while的代替语法
foreach的代替语法
1 2 3
| foreach(): endforeach;
|
应用实例
应用到混编上面
未使用代替语法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>混编</title> </head> <body> <?php for($i=1;$i<=10;$i++){ if($i%2==0){ ?> <?php echo $i?>:WelcomeErheBlog!<br><hr> <?php } } ?> </body> </html>
|
使用代替语法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>混编</title> </head> <body> <?php for($i=1;$i<=10;$i++): if($i%2==0): ?> <?php echo $i?>:WelcomeErheBlog!<br><hr> <?php endif; endfor; ?> </body> </html>
|
📥PHP函数
函数就是一段代码块
函数可以实现模块化编程
函数的定义
定义函数的基本语法
1 2 3
| function 函数名(参数1,参数2,.....){ }
|
函数的调用
PS:函数名不区分大小写。
可变函数
将函数名存储到变量中
1 2 3 4 5 6 7
| <?php function erhe($path){ echo $path,'<br>'; } $nvme='erhe'; $nvme('welcome'); ?>
|
匿名函数
1 2 3 4 5 6
| <?php $erhe=function(){ echo 'welcome erhe.group'; }; $erhe(); ?>
|
参数传递
函数的参数有形式参数和实际参数
形式参数是定义函数时候的参数,只起形式的作用,没有具体的值
实际参数的调用函数时候的参数,有具体的值
1 2 3 4 5 6
| <?php function erhe($num1,$num2){ echo $num1+$num2; } erhe(12,23); ?>
|
默认情况下,参数的传递是值传递
1 2 3 4 5 6 7 8
| <?php $num=10; function erhe($augrp){ $augrp=50; } erhe($num); echo $num; ?>
|
地址传递,加上$
1 2 3 4 5 6 7 8
| <?php $num=10; function erhe(&$augrp){ $augrp=50; } erhe($num); echo $num; ?>
|
PS:如果是地址传递,不能直接写值
参数的默认值
在函数定义的时候给形参赋值就是参数的默认值。(默认值必须是值,不能用变量代替)
1 2 3 4 5 6 7 8
| <?php function erhe($name,$port='地址不详'){ echo '姓名:'.$name,'<br>'; echo '地址:'.$port,'<hr>'; } erhe('阿里云','北京'); erhe('华为云'); ?>
|
默认值可以使用常量
1 2 3 4 5 6 7 8 9
| <?php define('ACE','地址不详'); function erhe($name,$port=ACE){ echo '姓名:'.$name,'<br>'; echo '地址:'.$port,'<hr>'; } erhe('阿里云','河南'); erhe('华为云'); ?>
|
PS:没有默认值的形参写前面,有默认值的形参写后面。
参数个数不匹配盘
1 2 3 4 5 6 7 8
| <?php function erhe($num1,$num2){ echo $num1,'<br>'; echo $num2,'<hr>'; }
erhe(10,20,30); ?>
|
获取所传递的参数
1 2 3 4 5 6 7 8 9 10 11
| <?php function erhe(){
$num=func_get_args(); print_r($num); echo '<br>'; } erhe(10); erhe(10,20); erhe(10,20,30); ?>
|
参数约束
定义变长参数
...
相当于func_get_args()
上面的函数
1 2 3 4 5 6 7 8 9 10
| <?php function erhe($name,$age,...$aihao){ echo '姓名:'.$name,'<br>'; echo '年龄:'.$age,'<br>'; print_r($aihao); echo '<hr>'; } erhe('tom',21); erhe('李华',25,'吃饭','睡觉'); ?>
|
⭕注意:如果数组调用此函数要将数组里面的参数展开
1 2 3 4 5 6 7 8 9
| <?php function erhe(...$args){ print_r($args); echo '<br>'; } $numg=[10,20,30]; echo '<pre>'; erhe(...$numg); ?>
|
参数类型约束
⭕注意:这个是适用于PHP7.0以上的版本
1 2 3 4 5 6 7 8
| <?php function erhe(string $name,int $age){ echo "姓名:{$name}<br>"; echo "年龄:{$age}<br>"; }
erhe('tome',32); ?>
|
返回值类型约束
1 2 3 4 5 6 7
| <?php function erhe(int $num):int{
return $num; } erhe(32); ?>
|
PS:可约束的数据类型有这些:string、int、float、bool、数组
约束返回类型是数组
1 2
| function erhe():array{ }
|
约束return后面不能有返回值
⭕注意:这个是适用于PHP7.1以上的版本
1 2 3 4
| function erhe():void { return; } erhe();
|
⛔return
终止脚本执行
1 2 3 4 5
| <?php echo '锄禾日当午<br>'; return; echo '汗滴禾下土'; ?>
|
⭕注意:return只能中断当前php文件,如果有包含文件,就只能中断有return的那个php文件。
如果想全部终止使用
返回页面结果
index.php(主页文件)
1 2 3 4
| <?php $stu=require './test.php'; print_r($stu); ?>
|
test.php(包含文件)
1 2 3
| <?php return array('name'=>'tom','sex'=>'男'); ?>
|
PS:在项目中引入配置文件就使用这种方法
函数的返回和终止
函数的终止
1 2 3 4 5 6 7 8
| <?php function erhe(){ echo 'aaa'; return; echo 'bbb'; } erhe(); ?>
|
函数的返回
1 2 3 4 5 6
| <?php function erhe(){ return 10; } echo erhe(); ?>
|
🪄练习测试
通过for循环将数组中值求和、求平均值
代码实现
1 2 3 4 5 6 7 8 9 10 11
| <?php $num=[1,24,534,65,2,54,657,2,64,35,54,767,86,344]; $he=0;
for($i=0,$n=count($num);$i<$n;$i++){ $he+=$num[$i]; } echo '和是:'.$he,'<br>'; echo '平均值:'.$he/count($num),'<br>'; echo '平均值,精确到小数点后两位:'.number_format($he/count($num),2); ?>
|
数组翻转
1 2 3 4 5 6 7
| <?php $stu=["Welcome","By","Erhe","Blog"]; for($i=0,$j=count($stu)-1;$i<$j;$i++,$j--){ [$stu[$i],$stu[$j]]=[$stu[$j],$stu[$i]]; } print_r($stu); ?>
|
遍历二维数组
1 2 3 4 5 6 7 8 9 10 11 12
| <?php $stu=[ [1,3,5,2,3,4,5], [12,32,435,3,2321,121,2,32,12] ]; for($i=0;$i<count($stu);$i++){ for($j=0;$j<count($stu[$i]);$j++){ echo $stu[$i][$j],' '; } echo '<br>'; } ?>
|
数据分拣
1 2 3 4 5 6 7 8 9 10 11 12 13
| <?php for($i=1;$i<=100;$i++){ if($i%15==0) echo 'C'; elseif ($i%3==0) echo 'A'; elseif ($i%5==0) echo 'B'; else echo $i; echo ' '; } ?>
|
打印水仙花数
1 2 3 4 5 6 7 8 9
| <?php for($i=100;$i<=999;$i++){ $a=(int)($i/100); $b=(int)(($i%100)/10); $c=(int)($i%10); if($i==pow($a,3)+pow($b,3)+pow($c,3)) echo $i,'<br>'; } ?>
|
斐波那契数列
1 2 3 4 5 6 7 8 9 10 11 12 13
| <?php $num1=1; $num2=1; echo $num1,' ',$num2,' '; while(true){ $num3=$num1+$num2; if($num3>100) break; echo $num3,' '; $num1=$num2; $num2=$num3; } ?>
|
🥅PHP作用域
声明的局部与全局
局部的变量声明
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| <?php $x=10020;
function myTest() { $y=10; echo "<p>测试函数内变量:<p>"; echo "变量 x 为: $x"; echo "变量 y 为: $y"; } myTest();
echo "<p>测试函数外变量:<p>"; echo "变量 x 为: $x"; echo "变量 y 为: $y"; ?>
|
变量作用域
全局变量:在函数外面
局部变量:在函数里面,默认情况下,函数内部是不会访问函数外部的变量
超全局变量:可以在函数内部和函数外部访问,形式:$_XXXXXX
常量没有作用域的概念,在哪里都适应。
报错写法:函数内部是不会访问函数外部的变量
1 2 3 4 5 6 7
| <?php $num=10; function erhe(){ echo $num; } erhe(); ?>
|
将值赋给全局变量
1 2 3 4 5 6 7
| <?php $_POST['num']=10; function erhe(){ echo $_POST['num']; } erhe(); ?>
|
函数内定义全局变量
1 2 3 4 5 6 7 8
| <?php function erhe(){ $_POST['num']=10; echo $_POST['num']; } erhe(); echo $_POST['num']; ?>
|
global 关键字
global 关键字用于函数内来读取并会更新数外的全局变量
1 2 3 4 5 6 7 8 9 10
| <?php $x=8; $y=6; function erhe(){ global $x,$y; $y=$x+$y; } erhe(); echo $y; ?>
|
函数内部访问全局变量:使用$GLOBALS[]
函数
1 2 3 4 5 6 7 8 9
| <?php $x=8; $y=6; function erhe(){ $GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y']; } erhe(); echo $y; ?>
|
PS:只要你声明了全局变量,它就会自动保存到$GLOBALS[]
函数里面。
Static 关键字
1 2 3 4 5 6 7 8 9 10 11 12
| <?php function erhe(){ static $x=0; echo $x; $x++; echo PHP_EOL; } erhe(); erhe(); erhe();
?>
|
静态变量
静态变量一般指的是静态局部变量
1 2 3 4 5 6 7 8 9 10 11
| <?php function erhe(){ $num=10; $num++; echo $num,'<br>'; } erhe(); erhe(); erhe();
?>
|
常量和静态变量的区别
1、常量和静态变量都是初始化一次
2、常量不能改变值,静态变量可以改变值
3、常量没有作用域,静态变量有作用域
匿名函数use()
默认情况下,函数内部不能访问函数外部的变量,但在匿名函数中,可以通过use将外部变量引入匿名函数中
1 2 3 4 5 6 7
| <?php $num=10; $erhe=function() use($num) { echo $num; }; $erhe(); ?>
|
PS:只能引入一层,嵌套使用use()
函数则不能引入成功
递归
函数内部自己调用自己
打印10~1
1 2 3 4 5 6 7 8 9
| <?php function erhe($num){ echo $num,' '; if($num==1) return; erhe($num-1); } erhe(10); ?>
|
从1加到100
1 2 3 4 5 6 7 8
| <?php function erhe($num){ if($num==1) return 1; return $num+erhe($num-1); } echo erhe(100); ?>
|
斐波那契数列
打印第五个斐波那契数
1 2 3 4 5 6 7 8
| <?php function erhe($n){ if($n==1 || $n==2) return 1; return erhe($n-1)+erhe($n-2); } echo erhe(5); ?>
|
打印前10个斐波那契数列
1 2 3 4 5 6 7 8 9
| <?php function erhe($n){ if($n==1 || $n==2) return 1; return erhe($n-1)+erhe($n-2); } for($i=1;$i<=10;$i++) echo erhe($i),' '; ?>
|
📣特别声明
此文章全部都是依靠自己的学习理解来写的原创文章,难免可能会出现有错误的地方,
如果大家以后阅读的时候发现有问题,那就麻烦到下方评论区来进行错误指出,使错误尽快做出改正,
在此,感谢大家的阅读与支持!🤝💦🎉
🍻支持一下
觉得我写的好的话可以支持一下我哦~持续关注我,会更新其他好玩且实用的项目。
👋如果我能帮助到你,那就请我喝杯🧋呗~👇👇👇