PHP中的Python等效Lambda

2 投票
2 回答
638 浏览
提问于 2025-04-18 15:36

我正在尝试在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]

撰写回答