php的函数参数按照从左到右来赋值
PHP 中自定义函数参数赋默认值
2012-07-07 13:23:00| 分类: php自定义函数,默|举报|字号 订阅
php自定义函数接受参数的时候可以直接给赋默认值
function TestStr($str)
{
return $str."是一个字符串";
}
echo TestStr("abcdef")."</br>";
上面这个自定义函数接受一个参数,如果我们调用的时候 TestStr() ;不给参数会是什么情况呢?
直接报错:Warning: Missing argument 1 for TestStr()
所以开发的过程中为了避免上面的错误我们一般要在自定义函数的时候给参数赋默认值,如下
function TestStr2($str="kkkkk")
{
return $str."是一个字符串";
}
现在调用 TestStr2() 不出错,直接输出 kkkkk是一个字符串,当然你传出参数后会替换掉默认参数.
第三种情况:
有2个以上参数的时候,如果不是全部给出默认值,一定要按照从右到左的参数依次给出默认值.如下就是错误的事例
function TestStr3($str ='mmmmm' ,$para)
{
return $str."和".$para."都是字符串";
}
上面并没有遵循从右到做给出默认值,而是最左边的给出了一个默认值.
当我们调用函数的时候 TestStr3("第一个参数"); 我们期望的是第一个参数以默认值代替,第二个参数用传入参数代替.但是不是这样的,替换参数的顺序是从左到右.所以第二个参数不但没有传入值,连默认值都没有,所以直接报错
正确的默认值应该是这样的
function TestStr3($str,$para='mmmmm')
{
return $str."和".$para."都是字符串";
}
然后输出:
第一个参数和mmmmm都是字符串
php的函数参数按照从左到右来赋值的更多相关文章
- php函数参数
函数的参数 通过参数列表可以传递信息到函数,即以逗号作为分隔符的表达式列表.参数是从左向右求值的. PHP 支持按值传递参数(默认),通过引用传递参数以及默认参数.也支持可变长度参数列表,更多信息参见 ...
- Python记录6:函数2,函数参数
# 一. 函数参数分为两大类 # 形参:在函数定义阶段括号定义的参数(变量名),称之为形式参数 #因为函数定义阶段只是用一个符号表示表示一个参数,并没有具体的值,所以称之为形式参数,形 ...
- c语言中函数参数入栈的顺序是什么?为什么
看到面试题C语言中函数参数的入栈顺序如何? 自己不知道,边上网找资料.下面是详细解释 #include <stdio.h> void foo(int x, int y, int z){ ...
- Day04:函数参数、对象、嵌套、闭包函数和装饰器
上节课复习: 1.什么是函数 函数就是具备某一功能的工具 2.为何用函数 1.程序的组织结构和可读性 2.减少代码冗余 3.扩展性强 ...
- C语言函数参数压栈顺序为何是从右到左?(从左向右的话,碰到printf的会陷入死循环)
上学期学习了汇编语言,并在操作系统实验中使用了汇编+C语言混合编程,中间也了解了一些C语言与汇编语言的对应关系. 由于汇编语言是底层的编程语言,各种函数参数都要直接控制栈进行存取,在混合编程中,要用汇 ...
- printf:函数参数计算从右向左,从左向右?
造冰箱的大熊猫@cnblogs 2019/8/3 1.问题 某天写了如下代码: unsigned char ReadByteFromFile ( FILE * fp ) { unsigned char ...
- Delphi_08_Delphi_Object_Pascal_基本语法_06_函数参数
发现Delphi中关于函数参数部分的内容还是比较多的,暂时说到这篇随笔为止吧,以后再继续讨论一下函数的参数部分的内容. 一 工程文件 program DefaultParameter; {$APPTY ...
- Matlab中plot函数参数解析
功能 二维曲线绘图 语法 plot(Y) plot(X1,Y1,...) plot(X1,Y1,LineSpec,...) plot(...,'PropertyName',PropertyValue, ...
- C++ 二维数组(双重指针作为函数参数)
本文的学习内容参考:http://blog.csdn.net/yunyun1886358/article/details/5659851 http://blog.csdn.net/xudongdong ...
随机推荐
- 论文笔记(8):BING: Binarized Normed Gradients for Objectness Estimation at 300fps
译文: <基于二值化赋范梯度特征的一般对象估计> 摘要: 通过训练通用的对象估计方法来产生一组候选对象窗口,能够加速传统的滑动窗口对象检测方法.我们观察到一般对象都会有定义完好的封闭轮廓, ...
- 网页提示错误(net::ERR_EMPTY_RESPONSE)
突然个别网页打不开,报上面的错,本来还以为是网页的问题,结果发现是自己的电脑的问题..因为从别的设备上可以打开相同网页. 1.运行→regedit→进入注册表, 在 HKEY_LOCAL_MACHIN ...
- java中数组复制的两种方式
在java中数组复制有两种方式: 一:System.arraycopy(原数组,开始copy的下标,存放copy内容的数组,开始存放的下标,需要copy的长度); 这个方法需要先创建一个空的存放cop ...
- SQL Server 历史SQL执行记录
编程执行Sql语句难免忘记保存执行的文本,或是意外设备故障多种情况的发生.对于写的简单的Sql语句丢了就丢了,但对于自己写的复杂的丢失就有些慌了, 有时候很难再次写出来,这时候就需要用一些方法找回Sq ...
- 数组的迭代方法(every、filter、forEach、map、some)
every: 对数组中的,每一项运行给定函数,如果该函数对每一项都返回true,则返回true. var number = [1,2,3,4,5,6]; var result = number.eve ...
- sshpass的使用方法
author:headsen chen date : 2017-11-29 15:46:39 notice:created by headsen chen himself and not ...
- python全栈开发-Day5 集合
python全栈开发-Day5 集合 一.首先按照以下几个点展开对集合的学习 #一:基本使用 1 .用途 2 .定义方式 3 .常用操作+内置的方法 #二:该类型总结 1. 存一个值or存多个值 只能 ...
- 关于IM的一些思考与实践
上一篇简单的实现了一个聊天网页,但这个太简单,消息全广播,没有用户认证和已读未读处理,主要的意义是走通了websocket-sharp做服务端的可能性.那么一个完整的IM还需要实现哪些部分? 一.发消 ...
- [模拟赛] T3 Exploit
Description 4X概念体系,是指在PC战略游戏中一种相当普及和成熟的系统概念,得名自4个同样以"EX"为开头的英语单词. eXplore(探索) eXpand(拓张与发展 ...
- Go实现海量日志收集系统(一)
项目背景 每个系统都有日志,当系统出现问题时,需要通过日志解决问题 当系统机器比较少时,登陆到服务器上查看即可满足 当系统机器规模巨大,登陆到机器上查看几乎不现实 当然即使是机器规模不大,一个系统通常 ...