标准风格
// 这里写PHP代码!
代码一;
代码二; // 每一句的结尾记得加分号
?>
⭕注意:如果一个文件里面全部都是PHP代码,推荐省略结束语句?>
。
// 注释内容
# 注释内容
/*
注释内容
*/
PHP的变量不用声明就能够直接定义与使用
$txt="php 在这里"; // 如果是文本信息就使用双引号
$a=5; // 其他的数字类型的直接声明就好了
$b=10.5;
$c=$a+$b;
?>
⭕变量声明与创建的注意事项
$num1=10;
$num2=$num1;
$num2=20;
echo $num1;
&
表示获取变量的地址
$num1=10;
$num2=&$num1;
$num2=20;
echo $num1;
只销毁变量名不销毁变量值,变量值由PHP垃圾回收机制销毁(没有变量引用的值就是)
unset(变量名)
function ([可声明变量,这个可以为空])
{
// 函数的内容
}
[函数名]([可声明的变量值,这个可以为空]);
?>
echo
函数和print
函数,它们是作用基本上相同,用法也都差不多,只能输出数值跟字符串
echo
函数
echo "我这里可以放HTML句子
";
echo "By ERHE.GROUP
";
echo "HTML中的转义符正常用
";
echo "我是", "一句", "话", ",", "但是", "被分开了。";
$a1=520;
$txt1="erhe.group";
echo "我喜欢的数字是 $a1";
echo "
";
echo "我的网页是:$txt1";
echo "
";
echo ("要不要一起开发: $txt1"); // 加括号与不加是一个效果的
?>
print
函数
print "我这里可以放HTML句子
";
print "By ERHE.GROUP
";
print "HTML中的转义符正常用
";
// print "我是", "一句", "话", ",", "但是", "被分开了。";(错误写法)
// print 不能输出多个文本的组合
$a1=520;
$txt1="erhe.group";
print "我喜欢的数字是 $a1";
print "
";
print "我的网页是:$txt1";
print "
";
print ("要不要一起开发: $txt1"); // 加括号与不加是一个效果的
?>
⭕注意:print
不能输出多个文本的组合,echo
可以
print:输出成功后成功返回1
print_r():输出数组
var_dump():输出数据的详细信息,并且带有数据类型和长度
PHP EOF的基本格式
echo <<<EOF
标题
段落
EOF;
// ↑结束需要独立一行且前后不能空格,记得带上;要不编译不会通过
?>
常量就是在整个运行过程中,固定不变的值,常量不带$
,推荐一般情况下常量名为大写
定义方法
define('变量名','值',[变量名大小写区分可指定true、false(默认)])
正常情况下不能用特殊字符做变量名,但是可使用constant
来获取特殊字符定义的值
define('*.*','erhe');
echo '这个网站是',constant('*.*');
也可以使用const
来定义常量
const WEB='Erhe Web';
echo WEB;
常量一旦被定义,不能再被重新定义
判断常量是否定义,通过defined()
判断常量是否已经定义
define('WEB','erhe');
if(!defined('WEB')){
define('WEB','erhe by wss');
}
echo WEB;
PHP_EOL // 换行符
PHP_VERSION; // PHP版本
PHP_OS; // PHP运行的系统环境
PHP_INT_MAX; // PHP中整型的最大值
// · · · · · ·还在持续更新中
魔术常量的值,随着它们在代码中的位置改变而改变
__LINE__; // 获取当前行号
__FILE__; // 文件的完整目录和文件名
__DIR__; // 文件所在的目录
数据类型有两种:强类型和弱类型
PHP是弱类型数据,但是在PHP7.0以后就支持强类型数据
$x = 5201314;
var_dump($x);
echo "
";
$x = -119; // 负数
var_dump($x);
$a1 = 10; // 十进制
$a2 = 010; // 八进制
$a3 = 0x10; // 十六进制
echo $a1,'
';
echo $a2,'
';
echo $a3,'
';
PS:var_dump
函数返回变量的数据类型和值
进制 | 缩写 | 单词 |
---|---|---|
十进制 | dec | decimalist |
二进制 | bin | binary |
八进制 | oct | octonary |
十六进制 | hex | hexdecimalist |
PHP进制转换机制
echo decbin(123),'
'; // 十进制转二进制
echo bindec(1111011),'
'; // 二进制转十进制
echo dechex(123),'
'; // 十进制转十六进制
echo hexdec('7b'),'
'; // 十六进制转十进制
echo decoct(123); // 十进制转八进制
$x = 3.14;
var_dump($x);
若要比较浮点数,必须要确定比较的位数
var_dump(bccomp(3.14,3.141,[这里指定比较的小数点后面的位数]));
结果的判定:如果两个数相等返回0,左边的数left_operand比较右边的数right_operand大返回1,否则返回-1
布尔型只有TRUE和FALSE,它的结果不能使用echo
和print
进行输出,要用var_dump()
来进行输出。
可以将任何文本放在单引号和双引号中
$a = "Welcome ERHE!";
echo $a;
echo "
";
$c = 'blog';
echo $c;
var_dump($c);
?>
单引号是真正的字符串,双引号要解析字符串当中的变量
$Web='erhe';
echo '我的网站是$Web','
';
echo "我的网站是$Web",'
';
⭕注意:变量名跟其他字符串用{}
分开,{}
表示获取变量的值
$Web='erhe';
echo "{$Web}是我的网站",'
';
echo "${Web}是我的网站",'
';
echo "$Web是我的网站",'
'; // 错误的写法
echo '我说:\'大家好!\'','
';
echo '文件保存在c:\\';
$test1='定界符,heredoc形式,类似于(双引号)';
echo <<<suibian
$test1
这个网站是
Erhe的
一个博客网站
suibian;
$test2='定界符,nowdoc形式,类似于(单引号)';
echo <<<'suibian'
$test2
这个网站是
Erhe的
一个博客网站
suibian;
?>
由<<<
后面跟上标识符,要首位呼应,标识符命名规则跟变量的命名规则一样,最后结尾的时候要顶格写。
数组也是变量,一个变量可以保存多个同类型的数据,只是在内存中这个变量具有连续的空间
用整数做下标,默认从0开始(可指定),后面依次加一
print '索引数组
';
$cars=array("Welcome","By","Erhe","Blog");
// 下标 0 1 2 3
print_r($cars); // 输出数组
echo '
';
var_dump($cars); // 带是上数据长度输出数组
echo '
';
echo $cars[0],'
'; // 输出数组上面的数据
echo $cars[2],'
'; // 输出数组上面的数据
?>
用字符串做下标,通过=>符号将下标和值关联起来
print '关联数组
';
$empc=array('name'=>'Welcome','sex'=>'Erhe','orc'=>'Blog');
echo $empc['name'],'
';
echo $empc['sex'],'
';
print_r($empc);
echo '
';
var_dump($empc);
?>
print '被指定的索引数组
';
$shutd=array(1=>"Welcome","By","Erhe","Blog");
print_r($shutd);
echo '
';
$shutdo=array("Welcome",3=>"By","Erhe",10=>"Blog",'group');
print_r($shutdo);
echo '
';
$shutdow=array("Welcome",5=>"By",'name'=>"Erhe","Blog");
print_r($shutdow);
echo '
';
$shutdown=array(1=>"Welcome",1=>"By",1=>"Erhe","Blog");
print_r($shutdown);
?>
数组的下标只能是正整数和字符串
$a1[true]='aa'; // 转成1
print_r($a1);
echo '
';
$b1[false]='bb'; // 转成0
print_r($b1);
echo '
';
$c1[12.9]='cc'; // 转成12(取整数部分)
print_r($c1);
echo '
';
$d1[-10]='dd'; // 负数可以做下标
print_r($d1);
echo '
';
$e1[-12.3]='ee'; // 取负整数
print_r($e1);
echo '
';
$f1['10']='ff'; // 字符串数字转成数字
print_r($f1);
echo '
';
$g1[]='gg'; // 空字符串也可以做下标
print_r($g1);
echo '
';
$h1[null]='hh'; // 转成空字符串做下标
print_r($h1);
?>
可以直接使用中括号来声明属组
print '索引数组
';
$cars=array("Welcome","By","Erhe","Blog");
print_r($cars);
?>
数组的赋值
⭕注意:这个是适用于PHP7.1以上的版本
$num1=10;
$num2=20;
[$num1,$num2]=[$num2,$num1];
echo $num1,'
',$num2;
?>
二维数组的声明
$erhetwo=[
["Welcome","By","Erhe","Blog"],
['name'=>'Welcome','sex'=>'Erhe','orc'=>'Blog']
];
print_r($erhetwo);
echo '
';
echo''
; // 原样显示
print_r($erhetwo);
?>
字符串与数组
⭕注意:这个是适用于PHP7.1以上的版本
echo 'erheblog'[0],'
';
echo 'erheblog'[-1],'
'; // 从右边开始取第一个
?>
当提供的类型和需要的类型不一致的时候会自动进行类型转换
$num=10;
if($num){ // 自动将数字转成布尔型
echo 'aa';
}else{
echo 'bb';
}
echo '
';
echo '20'-10; // 自动的将字符串转成数字
?>
语法:(数据类型)数据
$num=12;
var_dump($num,(int)$num,(float)$num);
?>
规则:0、空为假,非0、非空为真
var_dump((bool)'abc'); // bool(true)
echo '
';
var_dump((bool)''); // bool(false)
echo '
';
var_dump((bool)'0'); // bool(false)
echo '
';
var_dump((bool)'0.0'); // bool(true)
echo '
';
var_dump((bool)'00'); // bool(true)
echo '
';
var_dump((bool)'false'); // bool(true)
echo '
';
var_dump((bool)'null'); // bool(true)
echo '
';
var_dump((bool)1); // bool(true)
echo '
';
var_dump((bool)0); // bool(false)
echo '
';
var_dump((bool)-10); // bool(true)
echo '
';
var_dump((bool)0.0); // bool(false)
echo '
';
var_dump((bool)array()); // bool(false)
echo '
';
var_dump((bool)array(1)); // bool(true)
echo '
';
var_dump((bool)array(false)); // bool(true)
echo '
';
var_dump((bool)null); // bool(false)
echo '
';
?>
一元运算符 | 二元运算符 |
---|---|
++ | + |
– | - |
* | |
、 | |
% (取余) |
⭕注意:在PHP中。算术运算符只能做数学运算。
echo '10'+'20','
'; // 自动进行数据转换
echo '10ab'+'20cd','
'; // 省略字符
echo 'ab10'+'cd20','
'; // 读取字符串的首字符
?>
++后置:先运算再自增
$suma=10;
echo $suma++; // 10
?>
++前置:先自增再运算
$suma=10;
echo ++$suma; // 11
?>
>
>=
<
<=
== // 等于运算,但是不比较值的类型
!=
=== // 完全等于运算,不仅比较值,而且还比较值的类型,只有两者一致才为真
!==
. // 连接字符串
逻辑运算符
用来连接两个比较运算符
& // 与:运算符两边的表达式都要计算
| // 或:运算符两边的表达式都要计算
// 短路就是如果前面的条件不满足,后面的条件就不用计算了
&& // 短路与
|| // 短路或
! // 非
$a=5;
if($a>10 && ++$a>20)
echo 'erhe.group';
echo $a;
?>
// 分析:$a>10为false,与中只要有一个是false,另一个不用计算结果肯定是false,所以短路与++a就不计算了,结果是5。
$a=5;
if($a<10 || ++$a>20)
echo 'erhe.group';
echo $a;
?>
// 分析:短路或只要有一个为true,结果肯定是true,$a<10结果是true,后面++$a就不用计算了,结果是5。
=
+=
-=
*=
/=
%=
echo 'aa'.'bb';
echo 'aa','bb';
?>
错误抑制符只对表达式有效
echo $erhe+$group;
echo '
','
';
echo @($erhe+$group); // 错误抑制符
?>
语法:表达式?值1:值2
表达式的值为true,或者是1返回值1,否则返回值2
$erhe=10;
echo $erhe%2?'奇数':'偶数';
?>
⭕注意:这个是适用于PHP7.0以上的版本
$data1=321;
echo $data1??'数据未知!';
echo '
','
';
echo $data2??'数据未知!';
?>
isset(); // 判断变量是否被设置,并且设置的不是null
empty(); // 判断一个变量是否为空
PS:变量是否无为空的定义,就是变量的值在转成布尔型的值时候,显示的结果为false的全部为空。
if(条件){
// 代码块
}
if(条件){
// 代码块
}else{
// 代码块
}
if(条件1){
// 代码块
}elseif(条件2){
// 代码块
}else {
// 代码块
}
case 常量:
// 代码块
break;
case 常量:
// 代码块
break;
default:
// 代码块
步骤:
代码实现
判断是否为闰年
请输入年份:
小结:
$_POST
是一个变量,用来保存post提交的数据action=""
表示将数据提交到本页面is_numeric()
用来判断变量是否是数字或字符串数字is_int()
判断变量是否是整形if else
后面如果只有一句代码,大括号可以省略目标:输入语文和数学判断等级
代码实现:
判断成绩
100){
echo '语文成绩必须在0-100之间';
}
elseif($math='' || !is_numeric($math) || !($math>=0 && $math<=100)){
echo '数学成绩必须在0-100之间';
}else {
$avg=($ch+$math)/2;
echo "您的平均分是:{$avg}
";
if($avg>=90)
echo 'A';
elseif($avg>80)
echo 'B';
elseif($avg>=70)
echo 'C';
elseif($avg>=60)
echo 'D';
else
echo 'E';
}
}
?>
语文:
数学:
目标:选择颜色,将文字的颜色改成选择的颜色
代码实现:
更改颜色
window.οnlοad=function(){
document.getElementById('shi').style.color='$color';
}
str;
}
?>
锄禾日当午,
汗滴禾下土。
谁知盘中餐,
粒粒皆辛苦。
目标:实现一个网页计算器
代码实现:
计算器
基本语法
for(初始值;条件;增量){
// 代码块
}
⭕注意:循环中千万不能出现死循环
死循环案例1
for($i=1;$i<10;$i--){ // $i永远小于10
echo "{$i}:开始了死循环喂!
";
}
?>
死循环案例2
for($i=1;$i<10;){ // $i永远等于1,并且小于10
echo "{$i}:开始了死循环喂!
";
}
?>
死循环案例3
for($i=1;;$i++){ // 只要没有条件就是死循环
echo "{$i}:开始了死循环喂!
";
}
?>
死循环案例4
for(;;){ // 最经典的死循环
echo "{$i}:开始了死循环喂!
";
}
?>
循环理论:
在循环N次的循环体中,初始值执行了1次,条件执行了N+1次,增量执行了N次。在循环执行完毕后,变量的值($i)是存在的。
基本语法
while(条件){
// 代码块
}
基本语法
do{
// 代码块
}while(条件)
PS:
foreach循环是用来遍历数组,相似于for-in循环。
基本语法一
foreach(数组 as 值){
// 代码块
}
基本语法二
foreach(数组 as 键=>值){
// 代码块
}
基本语法
switch(变量){
// 验证条件
case [条件]:
// 条件执行体
break;
case [条件]:
// 条件执行体
break;
default:
// 条件执行体
}
PS:虽然只执行一次,但它也属于一种循环
实现功能:实现从1加到100
$sum=0;
for($i=1;$i<=100;$i++){
$sum+=$i;
}
echo $sum;
?>
方法一
$i=1;
$sum=0;
while($i<=100){
$sum+=$i;
$i++;
}
echo $sum;
?>
方法二
$i=1;
$sum=0;
while($i<=100){
$sum+=$i++;
}
echo $sum;
?>
方法一
$i=1;
$sum=0;
do{
$sum+=$i;
$i++;
}while($i<=100);
echo $sum;
?>
方法二
$i=1;
$sum=0;
do{
$sum+=$i++;
}while($i<=100);
echo $sum;
?>
方法三
$i=1;
$sum=0;
do{
$sum+=$i;
}while(++$i<=100);
echo $sum;
?>
PS:结合++前置和++后置考虑逻辑
方式一
$stu=["Welcome","By","Erhe","Blog"];
foreach($stu as $v){
echo $v,"
";
}
?>
方式二
$stu=["Welcome","By","Erhe","Blog"];
foreach($stu as $k=>$v){
echo "{$k}:{$v}","
";
}
?>
目的:初始值、增量可以由多条语句组成
实现功能:数字分解
for($i=1,$j=9;$i<=$j;$i++,$j--){
echo "10可以分成{$i}和{$j}
";
}
?>
PS:初始值、增量可以写多个表达式,但是条件一般只写一个,如果条件写多个,只是最后一个条件起作用
实现功能:打印阶梯数字
for($i=1;$i<=9;$i++){ // 循环行
for($j=1;$j<=$i;$j++){ // 循环列
echo $j,' ';
}
echo '
';
}
?>
实现功能:打印九九乘法表
for($i=1;$i<=9;$i++){
for($j=1;$j<=$i;$j++){
echo $i,'*',$j,'=',$i*$j,' ';
}
echo '
';
}
?>
变好看后
';
for($j=1;$j<=$i;$j++){
echo "{$i}*{$j}=",($i*$j),' ';
}
echo '';
}
?>
中断循环
for($i=1;$i<10;$i++){
echo "{$i}:Welcome","Erhe","Blog!
";
if($i==5)
break;
}
?> // 输出5句
for($i=1;$i<10;$i++){
if($i==5)
break;
echo "{$i}:Welcome","Erhe","Blog!
";
}
?> // 输出4句
中断多重循环
for($i=1;$i<=9;$i++){
for($j=1;$j<=$i;$j++){
echo $j,' ';
if($j==5){
break 2; // 跳出几个循环就写及
}
}
echo '
';
}
?>
中断当前循环,进入下一个循环
for($i=1;$i<10;$i++){
if($i==5)
continue;
echo "{$i}:Welcome","Erhe","Blog!
";
}
?> // 没有第5句的结果输出
PS:break和continue默认中断、跳出1重循环,如果调中断、跳出多重循环,在后面加一个数字。
PHP中,除了do-while以外,其他的语法结构都有替代语法
规则:左大括号变冒号,又大括号变endxxx
if():
elseif():
else:
// 代码块
endif;
switch():
// 代码块
endswitch;
for():
// 代码块
endfor;
while():
// 代码块
endwhile;
foreach():
// 代码块
endforeach;
未使用代替语法
混编
:WelcomeErheBlog!
使用代替语法
混编
:WelcomeErheBlog!
函数就是一段代码块
函数可以实现模块化编程
定义函数的基本语法
function 函数名(参数1,参数2,.....){
// 函数体
}
函数的调用
函数名();
PS:函数名不区分大小写。
将函数名存储到变量中
function erhe($path){
echo $path,'
';
}
$nvme='erhe';
$nvme('welcome');
?>
$erhe=function(){ // 定义匿名函数
echo 'welcome erhe.group';
};
$erhe(); // 调用函数
?>
函数的参数有形式参数和实际参数
形式参数是定义函数时候的参数,只起形式的作用,没有具体的值
实际参数的调用函数时候的参数,有具体的值
function erhe($num1,$num2){
echo $num1+$num2;
}
erhe(12,23);
?>
默认情况下,参数的传递是值传递
$num=10;
function erhe($augrp){
$augrp=50;
}
erhe($num);
echo $num;
?>
地址传递,加上$
$num=10;
function erhe(&$augrp){
$augrp=50;
}
erhe($num);
echo $num;
?>
PS:如果是地址传递,不能直接写值
在函数定义的时候给形参赋值就是参数的默认值。(默认值必须是值,不能用变量代替)
function erhe($name,$port='地址不详'){
echo '姓名:'.$name,'
';
echo '地址:'.$port,'
';
}
erhe('阿里云','北京');
erhe('华为云');
?>
默认值可以使用常量
define('ACE','地址不详'); // 设置常量
function erhe($name,$port=ACE){ // 注意形参的顺序
echo '姓名:'.$name,'
';
echo '地址:'.$port,'
';
}
erhe('阿里云','河南');
erhe('华为云');
?>
PS:没有默认值的形参写前面,有默认值的形参写后面。
function erhe($num1,$num2){
echo $num1,'
';
echo $num2,'
';
}
// erhe(10); // 实参少于形参(报错)
erhe(10,20,30); // 实参多于形参,只取前面对应的值
?>
获取所传递的参数
function erhe(){
// echo func_num_args(),'
'; // 获取参数的个数
$num=func_get_args(); // 获取参数的数组
print_r($num);
echo '
';
}
erhe(10);
erhe(10,20);
erhe(10,20,30);
?>
...
相当于func_get_args()
上面的函数
function erhe($name,$age,...$aihao){
echo '姓名:'.$name,'
';
echo '年龄:'.$age,'
';
print_r($aihao);
echo '
';
}
erhe('tom',21);
erhe('李华',25,'吃饭','睡觉');
?>
⭕注意:如果数组调用此函数要将数组里面的参数展开
function erhe(...$args){
print_r($args);
echo '
';
}
$numg=[10,20,30];
echo ''
;
erhe(...$numg); // 将数组中的参数展开
?>
⭕注意:这个是适用于PHP7.0以上的版本
function erhe(string $name,int $age){ // 指定数据类型,变成强类型数据
echo "姓名:{$name}
";
echo "年龄:{$age}
";
}
// erhe('tome','aug'); // 已经报错了
erhe('tome',32);
?>
function erhe(int $num):int{ // 指定返回值的数据类型
// return "aaa"; // 不是指定的返回值数据就报错
return $num;
}
erhe(32);
?>
PS:可约束的数据类型有这些:string、int、float、bool、数组
约束返回类型是数组
function erhe():array{
}
约束return后面不能有返回值
⭕注意:这个是适用于PHP7.1以上的版本
function erhe():void { // void是空的意思
return;
}
erhe();
echo '锄禾日当午
';
return;
echo '汗滴禾下土';
?>
⭕注意:return只能中断当前php文件,如果有包含文件,就只能中断有return的那个php文件。
如果想全部终止使用
exit();
// 或者
die();
index.php(主页文件)
$stu=require './test.php';
print_r($stu);
?>
test.php(包含文件)
return array('name'=>'tom','sex'=>'男');
?>
PS:在项目中引入配置文件就使用这种方法
函数的终止
function erhe(){
echo 'aaa';
return;
echo 'bbb';
}
erhe();
?>
函数的返回
function erhe(){
return 10;
}
echo erhe();
?>
代码实现
$num=[1,24,534,65,2,54,657,2,64,35,54,767,86,344];
$he=0;
// for($i=0;$i
for($i=0,$n=count($num);$i<$n;$i++){
$he+=$num[$i];
}
echo '和是:'.$he,'
';
echo '平均值:'.$he/count($num),'
';
echo '平均值,精确到小数点后两位:'.number_format($he/count($num),2);
?>
$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);
?>
$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 '
';
}
?>
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 ' ';
}
?>
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,'
';
}
?>
$num1=1; // 第一个数
$num2=1; // 第二个数
echo $num1,' ',$num2,' ';
while(true){
$num3=$num1+$num2; // 第三个数是前面两个数的和
if($num3>100) // 超过100终止循环
break;
echo $num3,' ';
$num1=$num2; // 将$num1转给$num2
$num2=$num3; // 将$num2转给$num3
}
?>
局部的变量声明
$x=10020; // 全局变量
function myTest()
{
$y=10; // 局部变量
echo "测试函数内变量:
"
;
echo "变量 x 为: $x";
echo "变量 y 为: $y";
}
myTest();
echo "测试函数外变量:
"
;
echo "变量 x 为: $x";
echo "变量 y 为: $y"; // 这个是没有输出的
?>
全局变量:在函数外面
局部变量:在函数里面,默认情况下,函数内部是不会访问函数外部的变量
超全局变量:可以在函数内部和函数外部访问,形式:$_XXXXXX
常量没有作用域的概念,在哪里都适应。
报错写法:函数内部是不会访问函数外部的变量
$num=10;
function erhe(){
echo $num;
}
erhe();
?>
将值赋给全局变量
$_POST['num']=10;
function erhe(){
echo $_POST['num'];
}
erhe();
?>
函数内定义全局变量
function erhe(){
$_POST['num']=10;
echo $_POST['num'];
}
erhe();
echo $_POST['num'];
?>
global 关键字用于函数内来读取并会更新数外的全局变量
$x=8;
$y=6;
function erhe(){
global $x,$y; // 将函数外部的变量,引用到函数内部
$y=$x+$y;
}
erhe();
echo $y; // 输出 14
?>
函数内部访问全局变量:使用$GLOBALS[]
函数
$x=8;
$y=6;
function erhe(){
$GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y']; // 访问全局变量
}
erhe();
echo $y; // 输出 14
?>
PS:只要你声明了全局变量,它就会自动保存到$GLOBALS[]
函数里面。
function erhe(){
static $x=0;
echo $x;
$x++;
echo PHP_EOL; // 换行符
}
erhe(); // 调用第一次
erhe(); // 调用第二次
erhe(); // 调用第三次
// PHP常量的每次调用的值都会被存储,下次调用时,用的是上次调用后的结果。
?>
静态变量一般指的是静态局部变量
function erhe(){
$num=10;
$num++;
echo $num,'
';
}
erhe(); // 调用第一次
erhe(); // 调用第二次
erhe(); // 调用第三次
// PHP静态局部变量的每次调用的值都不会被存储,下次调用时,用的是新的变量,上次的值会被销毁。
?>
常量和静态变量的区别
1、常量和静态变量都是初始化一次
2、常量不能改变值,静态变量可以改变值
3、常量没有作用域,静态变量有作用域
use()
默认情况下,函数内部不能访问函数外部的变量,但在匿名函数中,可以通过use将外部变量引入匿名函数中
$num=10;
$erhe=function() use($num) {
echo $num;
};
$erhe();
?>
PS:只能引入一层,嵌套使用use()
函数则不能引入成功
函数内部自己调用自己
打印10~1
function erhe($num){
echo $num,' ';
if($num==1) // 递归出口
return;
erhe($num-1); // 递归点
}
erhe(10);
?>
从1加到100
function erhe($num){
if($num==1) // 递归出口
return 1;
return $num+erhe($num-1); // 递归点
}
echo erhe(100);
?>
斐波那契数列
打印第五个斐波那契数
function erhe($n){
if($n==1 || $n==2) // 递归出口
return 1;
return erhe($n-1)+erhe($n-2); // 递归点
}
echo erhe(5);
?>
打印前10个斐波那契数列
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),' ';
?>
原文地址:https://blog.kbai.cc/%E5%85%A5%E5%9D%91PHP1/
此文章全部都是依靠自己的学习理解来写的原创文章,难免可能会出现有错误的地方,
如果大家以后阅读的时候发现有问题,那就麻烦到下方评论区来进行错误指出,使错误尽快做出改正,
在此,感谢大家的阅读与支持!
觉得我写的好的话可以支持一下我哦~持续关注我,会更新其他好玩且实用的项目。
我的博客链接:blog.kbai.cc