首页
下载
文档
社区
视频
捐赠
源代码
赞助商
AOT 编译器
AI 助理
商业产品
PHP AOT 原生编译器
Swoole-Compiler 代码加密器
CRMEB 新零售社交电商系统
登录
注册
全部
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
发表新帖
\Swoole\Coroutine\map函数的回调参数,能否添加一个数组的key
Swoole内置封装了map函数,但是在遍历数据时,数组的key($id)并没有传入回调的参数中,有些情况下我们会对数据进行分组,分组的key是很重要的,希望能传入 原来的ide-helper里的代码: ```php function map(array $list, callable $fn, float $timeout = -1): array { $wg = new WaitGroup(count($list)); foreach ($list as $id => $elem) { Coroutine::create(function () use ($wg, &$list, $id, $elem, $fn): void { $list[$id] = null; $list[$id] = $fn($elem); $wg->done(); }); } $wg->wait($timeout); return $list; } ``` 希望改进的代码: ```php $list = [ 'IoUesAnBJV' => [1, 2, 3], '93JS1id16R' => [7, 2, 3], '0EDCtZOAx0' => [6, 2, 3], 'hBtnq0j2U0' => [5, 2, 3], 'u4lfDZum9m' => [4, 2, 3], 'xcuTIaZyqq' => [3, 2, 3], 'aVD9EP0s5H' => [6, 3, 3], '43T7vekEDk' => [4, 3, 2], 'VR3dUbW29p' => [7, 8, 9], 'aOur7ZvEgN' => [5, 2, 6] ]; function map(array $list, callable $fn, float $timeout = -1): array { $wg = new WaitGroup(count($list)); foreach ($list as $id => $elem) { Coroutine::create(function () use ($wg, &$list, $id, $elem, $fn): void { $list[$id] = null; $list[$id] = $fn($elem, $id); $wg->done(); }); } $wg->wait($timeout); return $list; } ```
发布于3年前 · 23 次浏览 · 来自
建议
左心房的痛
Swoole内置封装了map函数,但是在遍历数据时,数组的key($id)并没有传入回调的参数中,有些情况下我们会对数据进行分组,分组的key是很重要的,希望能传入 原来的ide-helper里的代码: ```php function map(array $list, callable $fn, float $timeout = -1): array { $wg = new WaitGroup(count($list)); foreach ($list as $id => $elem) { Coroutine::create(function () use ($wg, &$list, $id, $elem, $fn): void { $list[$id] = null; $list[$id] = $fn($elem); $wg->done(); }); } $wg->wait($timeout); return $list; } ``` 希望改进的代码: ```php $list = [ 'IoUesAnBJV' => [1, 2, 3], '93JS1id16R' => [7, 2, 3], '0EDCtZOAx0' => [6, 2, 3], 'hBtnq0j2U0' => [5, 2, 3], 'u4lfDZum9m' => [4, 2, 3], 'xcuTIaZyqq' => [3, 2, 3], 'aVD9EP0s5H' => [6, 3, 3], '43T7vekEDk' => [4, 3, 2], 'VR3dUbW29p' => [7, 8, 9], 'aOur7ZvEgN' => [5, 2, 6] ]; function map(array $list, callable $fn, float $timeout = -1): array { $wg = new WaitGroup(count($list)); foreach ($list as $id => $elem) { Coroutine::create(function () use ($wg, &$list, $id, $elem, $fn): void { $list[$id] = null; $list[$id] = $fn($elem, $id); $wg->done(); }); } $wg->wait($timeout); return $list; } ```
赞
0
收藏
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
登录
后参与评论
评论
2023-04-08
Rango
感谢你的提议,建议你提交 `PR` 给 `swoole/library`
赞
0
回复
2023-04-11
左心房的痛
回复
Rango
已经提交 https://github.com/swoole/library/pull/160
赞
0
回复