不在匿名回调函数中递增变量

Not incrementing variable in an anonymous callback function

我试过同时使用 preg_replacepreg_replace_callback,但可能用错了。我做错了什么?

$str = '/admin/companies/{company}/projects/{project}/photos/{photo}/delete';
$pattern = '/({\w+})/';
$replacement = ['str_1', 'str_2', 'str_3'];

$i = 0;

$result = preg_replace_callback($pattern, function($matches) use ($i, $replacement) {
    return $replacement[$i++];
}, $str);

您想通过引用传递 $i,因此当您使用 $i++:

递增时它会更新
$result = preg_replace_callback($pattern, function($matches) use (&$i, $replacement) {
    return $replacement[$i++];
}, $str);

注意$i前的&