Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.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_Anonymous Function - Fatal编程技术网

Php 参数块在匿名函数中有什么用途

Php 参数块在匿名函数中有什么用途,php,anonymous-function,Php,Anonymous Function,在本例中: $foo = function () use (){ // ^---------^ what is the use? } 除此之外,我们还可以使用use()部分将数据导入函数,就像中的常规函数一样: function bar ($foo){ } 但是我不明白函数()部分可以用来做什么 例如: $a = 1; $foo = function ($b, $c) use ($a) { echo $a . PHP_EOL; echo $b . PHP_EOL;

在本例中:

$foo = function () use (){
//     ^---------^ what is the use?

}
除此之外,我们还可以使用
use()
部分将数据导入函数,就像中的常规函数一样:

function bar ($foo){

}
但是我不明白
函数()
部分可以用来做什么

例如:

$a = 1;
$foo = function ($b, $c) use ($a)
{
    echo $a . PHP_EOL;
    echo $b . PHP_EOL;
    echo $c . PHP_EOL;
};

$foo(2, 3);
$a = 5;
$foo(7, 8);
将输出:

1
2
3
1
7
8
$b,$c-将是执行时传递的参数。 $a在创建时绑定/导入。因此,如果在$foo定义之后更改它,它将不会更改。

例如:

$a = 1;
$foo = function ($b, $c) use ($a)
{
    echo $a . PHP_EOL;
    echo $b . PHP_EOL;
    echo $c . PHP_EOL;
};

$foo(2, 3);
$a = 5;
$foo(7, 8);
将输出:

1
2
3
1
7
8
$b,$c-将是执行时传递的参数。
$a在创建时绑定/导入。因此,如果在$foo定义之后更改它,它将不会更改。

参数块用于输入参数。所以如果我定义

$foo = function($bar) use ($baz) {
    return $bar + $baz;
}
然后我,比如说,将
$foo
传递给另一个函数,或者将它绑定到另一个类,我可以这样做

function bonk($bar, $foo) {
  $baz = 4;
  return $foo($bar);
}
还有别的地方吗

// Returns 7
bonk(3, $foo);
一个允许您从上下文中获取变量,而另一个必须传入。例如,我在定义$bonk的类中有$baz可用,所以我传入了它,但我还不知道$bar将是什么,直到它在传入$bar的其他地方被调用


好吧,让我们假设我是一个名为Cats的类,我有一个对象可以使用。我有一个名为doTheThing的方法,它接受一个函数和一个参数。它告诉猫该做什么,也可以选择对它做什么。所以它总是有相同的猫,但取决于我从哪里叫它,我可以让暹罗猫对不同的名词做不同的动词,但我知道是我的猫做的,因为这就是我定义猫的地方。

参数块用于输入参数。所以如果我定义

$foo = function($bar) use ($baz) {
    return $bar + $baz;
}
然后我,比如说,将
$foo
传递给另一个函数,或者将它绑定到另一个类,我可以这样做

function bonk($bar, $foo) {
  $baz = 4;
  return $foo($bar);
}
还有别的地方吗

// Returns 7
bonk(3, $foo);
一个允许您从上下文中获取变量,而另一个必须传入。例如,我在定义$bonk的类中有$baz可用,所以我传入了它,但我还不知道$bar将是什么,直到它在传入$bar的其他地方被调用


好吧,让我们假设我是一个名为Cats的类,我有一个对象可以使用。我有一个名为doTheThing的方法,它接受一个函数和一个参数。它告诉猫该做什么,也可以选择对它做什么。所以它总是有同一只猫,但取决于我从哪里叫它,我可以让暹罗猫对不同的名词做不同的动词,但我知道是我的猫做的,因为这就是我定义猫的地方。

问题不清楚<代码>函数标记用于告诉解析器它是一个函数。
函数
标记后面的括号告诉解析器“这里是定义参数的地方”@zerkms在本例中:
函数()使用(){}
部分导入函数范围内的任何内容,这意味着它正在做普通函数正在做的事情,但是在这种情况下,第一个括号怎么样?它是用来干什么的?它应该是空的吗?使用匿名函数作为各种USORT的回调需要两个值的函数参数进行比较。
使用
用于附加值。e、 g.
usort($array,function($a,$b){返回strnatcmp($a,$b);})
并与usort($array,function($a,$b)use($key){return strnatcmp($a[$key],$b[$key]);}进行比较@Contax“这意味着,它正在做一个正常函数正在做的事情”——一点也不。你可能误解了
use
的用法。问题不清楚<代码>函数标记用于告诉解析器它是一个函数。
函数
标记后面的括号告诉解析器“这里是定义参数的地方”@zerkms在本例中:
函数()使用(){}
部分导入函数范围内的任何内容,这意味着它正在做普通函数正在做的事情,但是在这种情况下,第一个括号怎么样?它是用来干什么的?它应该是空的吗?使用匿名函数作为各种USORT的回调需要两个值的函数参数进行比较。
使用
用于附加值。e、 g.
usort($array,function($a,$b){返回strnatcmp($a,$b);})
并与usort($array,function($a,$b)use($key){return strnatcmp($a[$key],$b[$key]);}进行比较@Contax“这意味着,它正在做一个普通函数正在做的事情”——一点也不。你可能误解了
use
的用法。但是如果你想计算
$bar+$baz
,你可以通过
use($bar,$baz)
将它们都传递给
use($bar,$baz)
,所以这仍然不能回答为什么我们需要第一个括号“$bonk(3,$foo);”应该是‘邦克(3,$foo);’但是如果你想计算
$bar+$baz
,你可以通过
use($bar,$baz)
传递它们,所以这仍然不能回答为什么我们需要第一个括号“$bonk(3,$foo);”应该是‘邦克(3,$foo);’不同之处在于函数每次调用时都读取参数,而不是
use
key?@Contax之类的东西。不同之处在于函数每次调用时都读取参数,而不是
use
key?@Contax之类的东西。