Php 将变量传递到函数和通过使用导入变量之间有什么区别吗?
请看下面的代码:Php 将变量传递到函数和通过使用导入变量之间有什么区别吗?,php,function,parameter-passing,Php,Function,Parameter Passing,请看下面的代码: $str = implode(', ', array_map(function($var1) use ($var2) { /* code */ }, $arr)); 如您所见,我在函数中使用了USE关键字导入var2。好的,很好。我也可以不用使用就可以做到这一点。大概是这样的: $str = implode(', ', array_map(function($var1. $var2) { /* code */ }, $arr)); function myFunction($
$str = implode(', ', array_map(function($var1) use ($var2) { /* code */ }, $arr));
如您所见,我在函数中使用了USE
关键字导入var2
。好的,很好。我也可以不用使用就可以做到这一点。大概是这样的:
$str = implode(', ', array_map(function($var1. $var2) { /* code */ }, $arr));
function myFunction($var1, $var2)
{
// myFunction logic
}
$arr = array('string1', 'string2', 'string3');
$temp = array();
foreach ($arr as $value) {
$temp[] = myFunction($value); // produces an e_warning since myFunction expects 2 arguments
}
$str = implode(', ', $temp);
那么我应该什么时候使用使用?它有什么特别的优点吗?使用函数将变量从一个作用域传递到另一个作用域是必要的。使用匿名函数时非常有用,因为匿名函数无法访问其作用域(父作用域)之外的变量。请参见下面链接中的示例#3
至于你的例子,我猜当你在匿名函数中使用2个参数时,你会/应该得到缺少的参数警告消息。您的第二个示例基本上如下所示:
$str = implode(', ', array_map(function($var1. $var2) { /* code */ }, $arr));
function myFunction($var1, $var2)
{
// myFunction logic
}
$arr = array('string1', 'string2', 'string3');
$temp = array();
foreach ($arr as $value) {
$temp[] = myFunction($value); // produces an e_warning since myFunction expects 2 arguments
}
$str = implode(', ', $temp);
将变量从一个作用域传递到另一个作用域时,需要对函数使用。使用匿名函数时非常有用,因为匿名函数无法访问其作用域(父作用域)之外的变量。请参见下面链接中的示例#3
至于你的例子,我猜当你在匿名函数中使用2个参数时,你会/应该得到缺少的参数警告消息。您的第二个示例基本上如下所示:
$str = implode(', ', array_map(function($var1. $var2) { /* code */ }, $arr));
function myFunction($var1, $var2)
{
// myFunction logic
}
$arr = array('string1', 'string2', 'string3');
$temp = array();
foreach ($arr as $value) {
$temp[] = myFunction($value); // produces an e_warning since myFunction expects 2 arguments
}
$str = implode(', ', $temp);
使用use
的原因是在定义函数时而不是调用函数时设置变量值。比如说,
$var1 = 1;
$var2 = 2;
$fun1 = function($var1) use ($var2) { return $var1 + $var2; };
$fun2 = function($var1, $var2) { return $var1 + $var2; };
echo $fun1(3);
// prints 5
echo $fun2(3,4);
// prints 7
使用use
的原因是在定义函数时而不是调用函数时设置变量值。比如说,
$var1 = 1;
$var2 = 2;
$fun1 = function($var1) use ($var2) { return $var1 + $var2; };
$fun2 = function($var1, $var2) { return $var1 + $var2; };
echo $fun1(3);
// prints 5
echo $fun2(3,4);
// prints 7