首页 > 解决方案 > 如何在 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 ?

标签: phpcollectionscakephp-4.x

解决方案


use关键字对此有帮助:

$item = collection($item)
      ->map(function ($value, $key) use ($id) { // <-- See `use`
          return preg_replace('/{{id}}/', $id, $value);
      })
      ->toArray();

PHP 手册:匿名函数


推荐阅读