Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将变量传递到函数和通过使用导入变量之间有什么区别吗?_Php_Function_Parameter Passing - Fatal编程技术网

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