如何一次拿到phpphp 函数参数默认值中的所有参数的实参值

问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
直接代码,使用场景:
现在的代码:
$gifts = $this-&get_list();
$gifts = array_filter($gifts,function($v) use ($customer_id){
return call_user_func(array($this,'gift_selector'),$v,$customer_id);
$gifts = $this-&get_list();
$gifts = array_filter($gifts,($this,'gift_selector'));
$gift是可以作为默认参数传入$this-&gift_selector(),但是 外部变量 $customer_id 怎么传入呢?
当然,closure的时候可以使用 use ($customer_id) 这个是知道的,不过在这里想把回调函数拿出来写,因为写成closure太长了。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
phpclass Demo
private $customer_id = 0;
public function doit()
$gifts = array('1', '2', '3');
$this-&customer_id = 3;
$gifts = array_filter($gifts, array($this,'gift_selector'));
private function gift_selector($v)
return $v==$this-&customer_id ? true :
= new Demo();
= $obj-&doit();
var_dump($gifts);
array (size=1)
2 =& string '3' (length=1)
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
写callback硬要传非参数的值可以通过
那样的类成员等方式实现,但我个人觉得这类似全局变量传递状态,属于不好的code smell
我的建议是可以考虑给get_list增加按回调过滤的能力
phpfunction get_list($filter = null) {
$gifts = [];//原本的逻辑..
if(is_callable($filter)) {
$gifts = array_filter($gifts,function($gift) use ($customer_id) {
return call_user_func($filter, $gift, $customer_id);
php$this-&get_list([$this,'gift_selector']);
了,gift_selector能够收到$gift, $customer_id作为参数
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
全局变量,session/cookie,引用传值
类属性赋值
$this-&customer_
同步到新浪微博
分享到微博?
你好!看起来你挺喜欢这个内容,但是你还没有注册帐号。 当你创建了帐号,我们能准确地追踪你关注的问题,在有新答案或内容的时候收到网页和邮件通知。还能直接向作者咨询更多细节。如果上面的内容有帮助,记得点赞 (????)? 表示感谢。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:PHP函数-调用函数_参数传递_变量函数_引用
1、定义和调用函数
  函数概念:将一些重复使用到的功能写在一个独立的代码块中,在需要时单独调用。
  创建函数的基本语法格式为:
       function&fun_name($str1,$stgr2…$strn){
           fun_
       }
  参数说明:
  function:为声明自定义函数时必须使用到的关键字。
  fun_name:为自定义函数的名称。
  $str1…$strn:为函数的参数。
  fun_body:为自定义函数的主体,是功能实现部分。
  函数的调用:当函数被定义好后,所要做的就是调用这个函数。调用函数的操作十分简单,只需要引用函数名并赋予正确的参数即可完成函数的调用。
2、在函数间传递参数
  在调用函数时,需要向函数传递参数,被传入的参数称为实参,而函数定义的参数为形参。参数传递的方式有按值传递、按引用传递和默认参数3种。
  1.按值传递方式
  将实参的值复制到对应的形参中,在函数内部的操作针对形参进行,操作的结果不会影响到实参,即函数返回后,实参的值不会改变。
  2.按引用传递方式
  按引用传递就是将实参的内存地址传递到形参中。这时,在函数内部的所有操作都会影响到实参的值,返回后,实参的值会发生变化。引用传递方式就是传值时在原基础上加&号即可。
  3.默认参数(可选参数)
  还有一种设置参数的方式,即可选参数。可以指定某个参数为可选参数,将可选参数放在参数列表末尾,并且指定其默认值为空。
3、从函数中返回值
  通常,函数将返回值传递给调用者的方式是使用关键字return()。
  return()将函数的值返回给函数的调用者,即将程序控制权返回到调用者的作用域。如果在全局作用域内使用return()关键字,那么将终止脚本的执行。
  return语句只能返回一个参数,也即只能返回一个值,不能一次返回多个。如果要返回多个结果,就要在函数中定义一个数组,将返回值存储在数组中返回。
4、变量函数
  PHP支持变量函数。下面通过一个实例来介绍变量函数的具体应用。(略)
5、对函数的引用
  引用不仅可用于普通变量、函数参数,也可作用于函数本身。对函数的引用,就是对函数返回结果的引用。
6、取消引用
  当不再需要引用时,可以取消引用。取消引用使用unset()函数,它只是断开了变量名和变量内容之间的绑定,而不是销毁变量内容。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。问:PHP多个继承于同个父类的子类在同个页面实例化,父类的...答:friendsClass.php测试的动态网页(这个应该不需要了吧)首先:mysqlClass有构造函数,功能是获取config.db.php数据库连接参数,...接着:两个子类都没有默认构造函数,直接extends父类,默认使用...
问:c++的函数的参数可以使用默认值吗?请教C++高手答:当然可以使用默认参数了例:/函数声明指定r的默认值是.,如果在调用时确定r的值是.那么则在调用时不用再写参数了 float area(float r=.);直接调用函数,...
问:keil中的函数默认值的问题请问在keil中怎么给函数赋予默认值啊在c++里面应该是在声明部分赋予默认值但是...答:.标准c函数不支持缺省参数。.sbit不能作为函数参数,你直接清不就行了吗 P=;参考文献::.keil./forum/docs/.asp
问:php函数不支持的功能有:php函数不支持的功能有()A.可变的函数名称 B.可变的参数个数 C.通过引用传递参数...答:php函数的参数个数必须是确定的,当然你引用函数的时候,如果有的参数是有默认值的,可以不用将他们写上 function test($a,$b=array()){}你引用的时候可以...
问:C++函数的重载理解问题 C++函数的重载理解问题/overload.cpp-Script./We need the iostream file in...答:首先你理解是错误的,解释如下:这两个函数:void dollarsToEuros(float rate,unsigned dollars=);void dollarsToEuros(float rate,float dollars=.);是重载...
问:php自定义函数 默认值 php$name="Eric Li;function say_hello($greeting="Hello",$target="D d",$...答:仿佛默认值得只能放在最后,然后不传参数就行了?php$name="Eric Li;function say_hello($target="D d",$greeting="Hello",$punct=!{ echo$greeting.",".$...
问:个php函数问题 mysql_server_name="mysql_username="mysql_password="*;mysql_...答:mysql_query()仅对 SELECT,SHOW,EXPLAIN或 DESCRIBE语句返回个标识符,如果执行不正确则返回 FALSE。对于其它类型的 SQL语句,mysql_query()在...
问:sql函数 参数能给默认值不? sql函数 参数能给默认值不?就像 Create Function GetSum(#a int,#b int)给b...答:可以(#a int,#b int=)可以传参,也可以传两参
问:公式中函数设置,默认值定义?公式中函数设置,默认值定义是否为常用值?例如,天内,股价最高,最低...答:软件中的各种指标都是用公式计算出来的,公式中的参数是可调整的,打开软件你所看到的指标是组由设计者设定的参数计算出来的,该参数就是默认值,也是常用...
问:php函数中,多个参数的情况下怎么使其中个参数为默认值而...例如:foo($a=,$b=,$c=){ echo$a;echo$b;echo$c;}那么在调用foo的时候怎么能...答:PHP不支持这种调用方式,你的需求是不能实现的。如果你不能改动函数,那么你可以做个封装。PHP的语法比较灵活,有几种替方式你可以借鉴。这些例子都有广泛的...
问:php替换函数?有个留言板,如果输入html码,和其他码,显示待页面就会把页面的排版...答:你这个可以有两种方法,看哪个适合就用哪个:是过滤html,用strip_tags()函数二是转换html。用htmlspecialchars()函数希望能给你帮助。
问:类的成员函数的参数可以设置默认值对吗答:是的,可以,例如:put(int a.int b=)当你传参时不给b赋值时,函数就使用b=;这个默认值!
问:PHPPDO扩展的 perpare方法的参数疑问 prepare=$db-&prepare($sql,array(PDO:ATTR_CURSOR,PDO:CURSOR_FWDONLY));第二个...答:PDO:PARAM_BOOL表示个布尔类型 PDO:PARAM_NULL表示个SQL中的NULL类型 PDO:PARAM_INT表示个SQL中的INTEGER类型 PDO:PARAM_STR表示个SQL中的SQL CHAR...
问:php中函数传参数时可以先给默认值,js中函数也可以吗?...答:可以。但是有点 别:自定义php函数叫 function myfun($param="参数的数值",$param="参数二的数值"){}那么js里面初始化默认值需要这样:&&var...
09-1309-0909-0409-05
03-0511-1004-0804-06
◇本站云标签2013年1月 PHP大版内专家分月排行榜第三2012年12月 PHP大版内专家分月排行榜第三
2013年5月 总版技术专家分月排行榜第一
2016年7月 总版技术专家分月排行榜第二2016年3月 总版技术专家分月排行榜第二2015年12月 总版技术专家分月排行榜第二2014年8月 总版技术专家分月排行榜第二2014年7月 总版技术专家分月排行榜第二2013年6月 总版技术专家分月排行榜第二
2014年11月 PHP大版内专家分月排行榜第三2014年6月 PHP大版内专家分月排行榜第三2014年4月 PHP大版内专家分月排行榜第三2014年2月 PHP大版内专家分月排行榜第三2013年11月 PHP大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。}

我要回帖

更多关于 php 形参 实参 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信