php函数引用参数
❶ php调用函数时,使用某个参数的前面的参数默认值时,应该怎么处理
PHP不支持这种调用方式,你的需求是不能实现的。
如果你不能改动函数,那么你可以做一个封装。PHP的语法比较灵活,有几种替代方式你可以借鉴。这些例子都有广泛的应用。
示例一:如果参数值为null,则在函数里强制赋值为默认值
1
2
3
4
5
6
7
8
<?php
function foo2($a=1,$b=2,$c=3) {
if ($a === null) $a=1;
if ($b === null) $b=2;
if ($c === null) $c=3;
foo($a, $b, $c);
}
foo(1, null, 3);
示例二:使用数组参数
<?php
function foo3($array=array()) {
extract($array);
if (!isset($a)) $a=1;
if (!isset($b)) $b=2;
if (!isset($c)) $c=3;
foo($a, $b, $c);
}
foo(array('a'=>1, 'c'=>3));
python是支持你所说的那种调用方式的:
def foo(a=1, b=2, c=3):
pass
foo(a=1, c=3)
❷ php函数中传引用参数可以设置默认值吗
php函数
中传引用参数可以设置默认值吗
是这个样子的,定义的参数与调用时的参数名称可以不同。
带默认值的就是指当这些参数没有给出的时候可以按照预定义内容进行赋值。
function
text($i,
$a
=
"
test1
",
$test
=
"test2"){
echo
"
{$i}
";
echo
"
{$test1}
";
echo
"
{$test2}
";
}
❸ PHP的几种函数参数类型及一些特殊函数
给你整理如下:
默认参数:在函数声明时给参数赋值,而且此默认参数只能在最后,调用时可不传递任何参数(若只有默认参数的情况下)
可变参数:一个函数可能需要可个可变数目的参数。在php中,提供了三个函数用于检索函数中所传递的参数。func_get_args()返回一个提供提供给函数的所有参数的数组;func_num_args()返回提供给函数的参数数目;func_get_arg()返回一个来自参数的特定参数。具体如下:
$array = func_get_args();
$count = func_num_args();
$value = func_get_arg();
遗漏参数:当调用函数时,可以传递任意个参数给函数。当函数必要的参数没有i被传递时,此参数值是空,并且PHP会为每个遗漏的参数发出警告
可变函数:使用可变变量,可以基于变量的值调用函数
匿名函数:又叫闭包函数,允许临时建立一个没有指定名称的函数,最经常用作回调函数参数的值。需要注意的是,在匿名函数内的变量的用法不同于全局变量,在匿名函数内的变量是一个闭包变量,另外,被调用闭包的作用域不必是相同的。
❹ php 函数里的变量,函数外怎么引用
可以把$a变成超级全局变量$GLOBALS['a'],这样在其他的页面也能调用。
❺ php 函数内引用全局变量
<?php
$var1 = "Example variable";
$var2 = " ";
function global_references($use_globals)
{
global $var1, $var2;
if (!$use_globals) {
$var2 =& $var1; // visible only inside the function///???
} else {
$GLOBALS["var2"] =& $var1; // visible also in global context
}
}
global_references(false);//变量$var2赋值为对$var1的引用,但是它的值在函数外不可见,他是一个局部变量
echo "var2 is set to '$var2'\n<br>";
global_references(true);//将$var2注册到全局变量数组中赋值为对变量$var1的引用,他是全局可见的
echo "var2 is set to '$var2'\n";
?>
❻ PHP中,参数调用相应函数是如何实现的
symfony 里面的 Action 是这样做的 所有函数都有前缀execute
加入你传入的是
http://xxx.xxx.xxx.xxx/mymod/myfunc
那么就是调用mymod 模块的 myfunc 函数
具体可能是这样的意思
通过 URI 分析获取 mod 和 相应的 函数
$moles = "mymod";
$method = "myfunc"
$action = new $$moles();
$action->$method();
也就是 PHP 里比较喜欢人的 可变函数 以及 可变变量的 应用.
❼ php如何调用函数
PHP函数调用与Java/C/C++是一样的额,通过函数名(参数列表)就可以了,
举个栗子:
图中,有两处函数调用,一开始的session_start()是调用的PHP函数,validate_user($username, $password)是用户自定义函数,同样的方式调用。
❽ php的函数传参要怎么表达;如何让函数内修改全局变量
使用引用啊
给你写个例子啊,稍等
<?php
$A=10;//初始化一个变量,并赋值10
echo$A;//输出这个值echo'<br/>';//这里输出一个换行符是等下演示运行的时候为了区分functionB(&$B){//自定义函数,参数是引用形式
$B+=33;//给参数的值再加上33;
}B($A);//调用这个自定义函数,并把变量A作为参数
echo$A;//再次输出变量A的值
php面向过程编程方式中的自定义函数, 是一个独立的整体, 参数和返回值可以理解为是函数本身和函数之外的一个接口而已!
换句话说,常规下, 自定义函数中的变量与外部变量并没有关系, 哪怕变量名一模一样。各自独立!
而添加引用就不同了,引用可以理解为,比如说,就像2个手机号码绑定消费一样, 任何一个手机号消费, 就等于2个号都在消费,,当然,这是一个比喻啊!
❾ php函数参数中的&符号是什么意思
在PHP中&符号即传的是变量的引用而不是拷贝,引用意味着用不同的名字访问同一个变量内容。这并不像 C 的指针,它们是符号表别名。注意在 PHP 中,变量名和变量内容是不一样的,因此同样的内容可以有不同的名字。最接近的比喻是 Unix 的文件名和文件本身 - 变量名是目录条目,而变量内容则是文件本身。引用可以被看作是 Unix 文件系统中的紧密连接。
PHP 的引用允许你用两个变量来指向同一个内容。意思是,当你这样做时:
<?php
$a =&$b
?>
这意味着 $a 和 $b 指向了同一个变量。
注: $a 和 $b 在这里是完全相同的,这并不是 $a 指向了 $b 或者相反,而是 $a 和 $b 指向了同一个地方。
同样的语法可以用在函数中,它返回引用,以及用在 new 运算符中(PHP 4.0.4 以及以后版本):
<?php
$bar =& new fooclass();
$foo =& find_var ($bar);
?>
注: 不用 & 运算符导致对象生成了一个拷贝。如果你在类中用 $this,它将作用于该类当前的实例。没有用 & 的赋值将拷贝这个实例(例如对象)并且 $this 将作用于这个拷贝上,这并不总是想要的结果。由于性能和内存消耗的问题,通常你只想工作在一个实例上面。
尽管你可以用 @ 运算符来关闭构造函数中的任何错误信息,例如用 @new,但用 &new 语句时这不起效果。这是 Zend 引擎的一个限制并且会导致一个解析错误。
引用做的第二件事是用引用传递变量。这是通过在函数内建立一个本地变量并且该变量在呼叫范围内引用了同一个内容来实现的。例如:
<?php
function foo (&$var) {
$var++;
}
$a=5;
foo ($a);
?>
将使 $a 变成 6。这是因为在 foo 函数中变量 $var 指向了和 $a 指向的同一个内容。更多详细解释见引用传递。
引用做的第三件事是引用返回。
引用不是什么
如前所述,引用不是指针。这意味着下面的结构不会产生你预期的效果:
<?php
function foo (&$var){
$var =& $GLOBALS["baz"];
}
foo($bar);
?>
这将使 foo 函数中的 $var 变量在函数调用时和 $bar 绑定在一起,但接着又被重新绑定到了 $GLOBALS["baz"] 上面。不可能通过引用机制将 $bar 在函数调用范围内绑定到别的变量上面,因为在函数 foo 中并没有变量 $bar(它被表示为 $var,但是 $var 只有变量内容而没有调用符号表中的名字到值的绑定)。
引用传递
你可以将一个变量通过引用传递给函数,这样该函数就可以修改其参数的值。语法如下:
<?php
function foo (&$var) {
$var++;
}
$a=5;
foo ($a);
// $a is 6 here
?>
注意在函数调用时没有引用符号 - 只有函数定义中有。光是函数定义就足够使参数通过引用来正确传递了。
以下内容可以通过引用传递:
变量,例如 foo($a)
New 语句,例如 foo(new foobar())
从函数中返回的引用,例如:
<?php
function &bar() {
$a = 5;
return $a;
}
foo(bar());
?>
详细解释见引用返回。
任何其它表达式都不能通过引用传递,结果未定义。例如下面引用传递的例子是无效的:
<?php
function bar(){ // Note the missing &
$a = 5;
return $a;
}
foo(bar());
foo($a = 5) // 表达式,不是变量
foo(5) // 常量,不是变量
?>
这些条件是 PHP 4.0.4 以及以后版本有的。
引用返回
引用返回用在当你想用函数找到引用应该被绑定在哪一个变量上面时。当返回引用时,使用此语法:
<?php
function &find_var ($param){
/* ...code... */
return $found_var;
}
$foo =& find_var ($bar);
$foo->x = 2;
?>
本例中 find_var 函数所返回的对象的属性将被设定(译者:指的是 $foo->x = 2; 语句),而不是拷贝,就和没有用引用语法一样。
注: 和参数传递不同,这里必须在两个地方都用 & 符号 - 来指出返回的是一个引用,而不是通常的一个拷贝,同样也指出 $foo 是作为引用的绑定,而不是通常的赋值。
取消引用
当你 unset 一个引用,只是断开了变量名和变量内容之间的绑定。这并不意味着变量内容被销毁了。例如:
<?php
$a = 1;
$b =& $a;
unset ($a);
?>
不会 unset $b,只是 $a。
再拿这个和 Unix 的 unlink 调用来类比一下可能有助于理解。
引用定位
许多 PHP 的语法结构是通过引用机制实现的,所以上述有关引用绑定的一切也都适用于这些结构。一些结构,例如引用传递和返回,已经在上面提到了。其它使用引用的结构有:
global 引用
当用 global $var 声明一个变量时实际上建立了一个到全局变量的引用。也就是说和这样做是相同的:
<?php
$var =& $GLOBALS["var"];
?>
这意味着,例如,unset $var 不会 unset 全局变量。
$this
在一个对象的方法中,$this 永远是调用它的对象的引用。
❿ 在表单中如何调用带参数的php函数
你可以把function X 和Y写到一个独立的php文件中,例如C.php
然后在A,和B里面头部引用一下C.php就行了
require_once "C.php"; //require_once 表示引用了某个文件