PHP中的Python等效Lambda
我正在尝试在PHP中复制这段代码:
pool = ThreadPool(num_parts)
pool.map(
lambda f: migrate(client, user_id=user_id, files=f), all_files)
在PHP中,有什么等效的结构可以用来遍历一个数组,同时调用一个函数呢?如果能在PHP的多线程上下文中使用,那就更棒了!
2 个回答
0
遍历一个数组,同时调用一个函数,
$array = array(1,2,3);
$var = 'foo';
array_walk($array, function ($value, $key) use ($var) {
# do something
});
3
在Python中,lambda
可以在运行时创建一个匿名函数。
比如说:
def f(x):
return x * 2
或者:
f = lambda x: x * 2
这两种写法都会创建一个名为f
的函数,它的功能是返回x
乘以2。不过,lambda
的特别之处在于它可以创建一个没有名字的函数,这个函数可以被赋值给一个变量,或者作为参数传递,而不需要给它起个名字。
在PHP中,也可以用类似的方式实现这个效果,像这样:
$f = function ($x) { return $x * 2; }
现在变量$f
里存储了一个函数,可以用$f(value)
来调用它。
和Python一样,你也可以直接把这个匿名函数作为参数使用,而不需要先把它赋值给一个变量或者给它起名字。举个例子:
$arr = [1, 2, 3, 4, 5];
$arr = array_map(function ($x) { return $x * 2; }, $arr);
// $arr is now [2, 4, 6, 8, 10]