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 ...
随机推荐
- 第二章 js数据类型和变量
一.驼峰命名法 第一个单词首字母大写,如果有多个单词的话其他的单词首字母大写. eg:nickName 二.prototype现象 新的命名规范. 常用的:以下划线为首字母(变量为对象的私有成员变量) ...
- 洛谷 P1017 进制转换
推荐洛谷 题目描述 我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的(值减1)为指数,以10为底数的幂之和的形式.例如:123可表示为 1*10^2+2*10^1+ ...
- ER图
E-R图也称实体-联系图(Entity Relationship Diagram), 提供了表示实体类型.属性和联系的方法,用来描述现实世界的概念模型. 它是描述现实世界概念结构模型的有效方法.是表示 ...
- 用js写的时钟Demo
css代码: <style type="text/css"> .a { width: 200px; height: 100px; position: absolute; ...
- oracle相同SID对外提供多个service_names
为数据库设置多个服务名(通过SCOPE=both设置,同时修改参数文件) SQL> show parameter service_names; NAME TYPE VALUE --------- ...
- STL --> vector向量
vector向量 vector是一种对象实体,能够容纳许多其他类型相同的元素,因为又被称为容器. 头文件 在使用它时,需要包含头文件 <vector>. #include <vect ...
- 分析 webpack 打包后的代码
写在前面的:使用的 webpack 版本 3.0.0 一.开始 1. 准备 当前只创建一个文件 index.js,该文件作为入口文件,代码如下. console.log('hello, world') ...
- ElasticSearch的安装
一.安装javaSE环境(已配java环境变量的请直接跳过) 1.从Java JDK 官网下载适合自己的jdk版本.(我自己用的jdk1.7) 2.安装jdk后,配置java环境变量(ps:比较喜欢简 ...
- Android Service基础
Service Service 是一个组件,用来执行长时间的后台操作,不提供用户界面. 另一个应用组件可以启动一个Service,它将持续地在后台运行,即便是用户转移到另一个应用它也不会停止. 另外, ...
- JAVA基础之字符串和面向对象
* [String 类] * 1. String类位于java.lang包中,java.lang是java的语言包,使用时无须导包,自动导入. * * 2.拿到一个字符串对象: * ①字面量声明:St ...