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 ...
随机推荐
- java 关键字final static native详解
java 关键字native static final详解 一.final 根据程序上下文环境,Java关键字final有"这是无法改变的"或者"终态的"含义, ...
- 用CSS画出好玩的图形
1.上三角 #triangle-up { width: 0; height: 0; border-left: 50px solid transparent; border-right: 50px so ...
- SDP(12): MongoDB-Engine - Streaming
在akka-alpakka工具包里也提供了对MongoDB的stream-connector,能针对MongoDB数据库进行streaming操作.这个MongoDB-connector里包含了Mon ...
- Unity如何管理住Android 6.0 调皮的权限
前天我们项目有这么个需求,台湾版本由于要上谷歌Play要求安卓系统6.0以上的动态申请权限,对于一个做Unity的来说,是不是有点懵逼,这我该何去何从呢?我想静静,静静的想一想,权限也不就那么点事吗? ...
- 深入理解Java虚拟机到底是什么
摘自:http://blog.csdn.net/zhangjg_blog/article/details/20380971 什么是Java虚拟机 我们都知道Java程序必须在虚拟机上运行.那么虚拟机到 ...
- 使用外置无线网卡来切换mac地址
mac地址被別人過濾了!小樣,既然內置網卡不能修改mac,那我就用外置usb無線網卡,你以為你很厲害嗎,看我怎麼破解了你.
- ie8兼容圆角
ie8兼容圆角 PIE.HTC下载地址:http://css3pie.com/ 兼容ie8 代码如下: <!DOCTYPE html> <html> <head> ...
- Sublime + Python3 + 虚拟环境 + 去除 中文输出乱码
MacBook Pro Retina 13 2013年底版 所用软件 1. Sublime Text 3安装 Virtualenv package 2. 用 iterm2 .或者终端安装zip:apt ...
- es6学习笔记--新数据结构Set,Map以及WeakSet,WeakMap
在javascript中,存储数据的方式大部分就是以数组或者对象形式存储的,es6出现了4种新集合Set,Map,WeakSet,WeakMap来存储数据,简化了编程. 集合--Set 类似于数组,但 ...
- 第八届蓝桥杯B组java第四题
标题:取数位 求1个整数的第k位数字有很多种方法.以下的方法就是一种.对于题目中的测试数据,应该打印5.请仔细分析源码,并补充划线部分所缺少的代码.注意:只提交缺失的代码,不要填写任何已有内容或说明性 ...