如何在 CakePHP 4.2 中将变量传递给 $callback Collection::map($callback)?

How to pass variable to $callback Collection::map($callback) in CakePHP 4.2?

我不是 CakePhp 4 中 Collections 概念的专家,我不知道如何在 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 手册:Anonymous Functions