php - 如何在 CakePHP 4.2 中将变量传递给 $callback Collection::map($callback)?
问题描述
我不是 CakePhp 4 中集合概念的专家,我不知道如何在 Collection::map() 中传递变量
$item = [
'attributes' => [
'class' => 'mon-li-{{id}}',
'data-truc' => 'li-{{id}}'
],
'linkAttrs' => ['class' => 'mon-lien', 'style' => 'text-transform: uppercase']
];
$id = 5;
$item = collection($item)
->map(function ($value, $key){
return preg_replace('/{{id}}/', $id, $value); // $id is undefined
})
->toArray();
它给出:注意(8):未定义的变量:id
我怎样才能让我的函数知道 $id ?
解决方案
use
关键字对此有帮助:
$item = collection($item)
->map(function ($value, $key) use ($id) { // <-- See `use`
return preg_replace('/{{id}}/', $id, $value);
})
->toArray();
PHP 手册:匿名函数
推荐阅读
- spring-boot - Spring Batch/Data JPA 应用程序在调用 JPA 存储库(save、saveAll)方法时未将数据持久化/保存到 Postgres 数据库
- excel - excel从单元格中提取每个单词并存储到单独的列中
- function - 为什么调用未定义的函数不会产生编译器错误并在 C 中产生链接器错误?
- html - 边界过渡在右边工作,但不是在左边
- jquery - 如何在 IIS / Project 中禁用自动 HTTPS 重定向
- azure - 用于从 ACR 查询 2 个不同构建版本的 Microsoft Azure CLI 命令
- oracle-nosql - Oracle NoSQL 表创建表时缺少“)”错误
- javascript - html角度打字稿上的过滤数组
- yaml - 如何删除yaml文件中的特殊字符
- xamarin - 在 mvvmcross 中禁用侧边菜单或 derawer 菜单