PHP笔记 17 18 19 20 21
目录
- 自定义函数
- 参数
- 函数返回值
- PHP变量的范围
- 局部变量
- 全局变量
- 静态变量
- 参数的传递
- 按值传递参数
- 按引用传递参数
- 函数的默认参数
- 可变长度参数
- 可变函数(变量函数)
- **递归函数**
- 内部(内置)函数
自定义函数
<?php
function text()
{echo '你好!';
}
text();
注意:function后跟自定义函数。
末尾的text():为函数的调用,与前面的保持一致,同时text():放在自定义函数前,也能实现。
函数的调用需要遵守定义函数的时候写的规则,一一对应,将具体的实际参数传给定义函数时候写的形式参数;
调用函数之后执行的过程是相对独立的,互不干扰的,默认没有联系。
参数
形式参数由零个,一个或多个变量组成。
实际参数由零个,一个或多个参数组成,每个参数是一个表达式,用逗号隔开。
<?php
function add($a,$b)//形式参数,一种形式,在这里,没有具体的值
{echo $a+$b;
}
add(2,3);//实际参数
?>
函数返回值
是将函数执行后的结果返回给调用者,默认值如果不写返回,则函数的返回值为NULL。
<?php
function add($a,$b)
{return $a+$b;//返回值给调用的地方,结束这个函数的运行。
}
var_dump(add(2,3));//可输出
?>
调用了add函数
<?php
function add($a,$b)
{return $a+$b;
}
$i=add(2,3);
echo $i;
?>
PHP变量的范围
局部变量
局部变量也称内部变量,是在函数内定义的,其作用域仅限于函数内部(即为{ }内),离开函数后再使用这种变量就是非法的错误的。
<?php
function add(){$i=22;echo $i;//有意义
}
echo $i;//无意义
add();
全局变量
也叫外部变量,在函数的外部定义的,它的作用域为从变量定义处开始,到本程序,文件末尾。
但在PHP函数中无法直接使用全局变量,如需使用,必须用global声明变量。
<?php
$i=10;
function add(){global $i;//声明$i为全局变量,然后在这个函数内部就可以使用$i;echo $i;
}
add();
静态变量
在函数内部定义变量时,使用static关键字来定义变量。
<?php
function add(){static $i=23;//静态变量,仅在第一次调用时执行,echo ++$i;//当第二次执行这个函数的时候,$i这个变量依旧存在
}
add();
echo'<br />';
add();
而缺少关键字
<?php
function add(){$i=22;echo ++$i;//有意义
}
add();
echo'<br />';
add();
参数的传递
按值传递参数
默认的,我们在传递参数的时候默认使用的就是这个方式。
对于形式参数的操作,根本不是影响到实际参数(变量)的值,两者 相当于没有联系!
<?php
function add($i){echo ++$i;
}
$i=10;
add($i);
echo '<br />'.$i;
按引用传递参数
按引用传递参数,相当与形式参数和实际参数指的是同一个人,只是名字不一样,对于形式参数的操作会直接影响到实际的参数(变量)
<?php
function add(&$i){echo ++$i;
}
$i=10;
add($i);
echo '<br />'.$i;
函数的默认参数
可以给形式参数设置默认值,设置方法很简单直接赋值即可!
<?php
function add($i=10){echo ++$i;
}
add();
如果不传,按上面的值走。
<?php
function add($i=10){echo ++$i;
}
add(20);
如果传的话,按下面的实际参数值走。
注意:形式参数加默认值,要从右往左。
<?php
function add($a=1,$i){echo $a+$i;
}
add(,20);
会报错,要将右面的$i
先赋值。才可以对于$a
进行赋值。
<?php
function add($a,$i=1){echo $a+$i;
}
add(3,);
或
<?php
function add($a,$i=1){echo $a+$i;
}
add(3);
均可的到,如图所示。
以次同理…
可变长度参数
fun_get_args();//数组类型
fun_get_arg();//括号内可加数字(从0开始),代表要输出传入的第几个实参。
多为var_dump(fun_get_arg());
func_num_args();//返回传入函数的参数个数
这三个函数可以使用在我们的定义函数内部,能够返回给我们一些关于参数的信息。
可变函数(变量函数)
可变函数不能直接用于例如 echo,print,unset(),isset();empty(),include,require 以及类似的语言结构,
<?php
function text(){echo '可变text';
}
$a='text';//把函数名字加上引号,赋值给变量即可,
$a(2);//text();
递归函数
在函数内部,自己调用自己,
<?php
function text($n){echo $n.'可变';//前if($n>0){text($n-1);}else{echo'<-->';}echo $n.'可变';//后
}
text(3);
$n 是局部变量,在分配的空间里面相互独立,没有关联。
当先输入3执行完后键入判断,判断要求用test(),函数test()没有执行完毕,后面的输出3也不会执行。
内部(内置)函数
php提供给我们许多现成的函数或者结构,我们可以在实际的开发中直接使用。
还有一些函数需要开启 特定的php扩展模块,否则在使用他们时会得到一个致命的”未定义函数“错误。
PHP笔记 17 18 19 20 21相关推荐
- 蓝桥杯 算法训练 - 连续正整数的和 78这个数可以表示为连续正整数的和,1+2+3,18+19+20+21,25+26+27。 输入一个正整数 n(<=10000) 输出 m 行(n有m
问题描述 78这个数可以表示为连续正整数的和,1+2+3,18+19+20+21,25+26+27. 输入一个正整数 n(<=10000) 输出 m 行(n有m种表示法),每行是两个正整数a,b ...
- C4D R14/15/16/17/18/19/20软件安装包及教程
软件介绍: 中文名4D电影,外文名CINEMA 4D,研发公司为德国Maxon Computer,特点为极高的运算速度和强大的渲染插件,使用在电影<毁灭战士><阿凡达>中,获得 ...
- 小甲鱼python课后习题【16,17,18,19,20】
[学习笔记,仅供学习交流使用,知识源于鱼c论坛] 作业16: 测试题: 0.我们根据列表.元祖和字符串的共同特点,把它们三统称为什么? 序列 1)都可以通过索引得到每一个元素 2)默认索引值总 ...
- CTFshow 信息收集 web16 17 18 19 20
目录 web16 提示: flag: web17 flag: web18 提示: flag: web19 提示: flag: web20 信息收集收官 提示: flag: web16 提示: 对于测试 ...
- fedora 18 19 20 21 22 23 怎么安装中文语言包
Fedora 默认选择英文安装后,如何切换成中文: #yum install system-config-language #system-config-language 选择简体中文
- 黑马程序员 一步一步往上爬 学习毕老师java视频第17,18,19天
---------------------- <a href="http://edu.csdn.net/heima" target="blank"> ...
- Python二级笔记(18,19合集知识点篇)
知识点: 1,软件测试的目的是发现程序中的错误.调试是作为成功测试的后过而出现的步骤,也就是,调试是在测试发现错误之后排除错误的过程.软件调试的任务是诊断和改成程序中的错误. 2,深度等于控制的层数 ...
- Python二级笔记(18,19合集操作篇)
操作题: 1,键盘输入正整数n,按要求把n输出到屏幕,格式要求:宽度为25个字符,等号字符(=)填充,右对齐,带千位分隔符.如果输入正整数超过25位,则按照真实长度输出. 代码: s = input( ...
- 正则手机号码校验11位,13,14,15,16,17,18,19开头
最新文章
- 阿尔法特磁悬浮制冷机组荣获“2016年度中国数据中心优秀节能产品”殊荣
- 通往大神之路,百度Java面试题前200页。
- Arrays工具类(jre中基本类库提供的工具类)
- junit注释_通过此注释改善您的JUnit体验
- LeetCode 1260. 二维网格迁移(二维转一维)
- 作者:​光亮(1982-),男,博士,华为技术有限公司高级标准经理。
- one大白陪你聊聊2021年总结
- 计算机丢失disrupt,disrupt造句
- 从全息投影到全息平台,必须克服7个障碍
- java integer最大值_java int型最大值/最小值,最大值+1,最小值-1
- FairyGUI笔记 :MovieClip(三)
- css写三角兼容ie6
- jmeter上传文件踩坑指南
- js 实现简单todo效果
- 神武授权位置服务器,《神武3》X诸葛八卦村 多益网络第二个大型文创项目即将开启...
- 基于深度学习的车辆信息识别(一):车辆颜色识别
- VMware Workstation安装教程
- 有未经处理的异常 0xC00000FD Stack overflow (参数: 0x00000000, 0x00842000)
- Java 中 == 与 equals 区别,再确认一遍?
- xp系统计算机蓝屏,xp电脑开机蓝屏代码0×0000000A怎么办
热门文章
- 晋升项目经理一个月,我想离职.........
- 良心整理:PDF工具合集
- Linux的数字签名,Ubuntu系统下-加密和数字签名Email
- C++ | shared_ptr与weak_ptr
- 0.1- 机械加工工艺-----切削加工基础
- js实现点击下载文件
- 小白也可以学会小爱同学语言控制灯
- taro: 如何使用编译配置中定义的常量defineConstants
- BUUCTF SimpleRev(涉及大小端序存储的问题)
- LAPACK的C/C++接口及代码实例