不在匿名回调函数中递增变量
Not incrementing variable in an anonymous callback function
我试过同时使用 preg_replace
和 preg_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);
- 当前输出:
/admin/companies/str_1/projects/str_1/photos/str_1/delete
- 预期输出:
/admin/companies/str_1/projects/str_2/photos/str_3/delete
您想通过引用传递 $i
,因此当您使用 $i++
:
递增时它会更新
$result = preg_replace_callback($pattern, function($matches) use (&$i, $replacement) {
return $replacement[$i++];
}, $str);
注意$i
前的&
。
我试过同时使用 preg_replace
和 preg_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);
- 当前输出:
/admin/companies/str_1/projects/str_1/photos/str_1/delete
- 预期输出:
/admin/companies/str_1/projects/str_2/photos/str_3/delete
您想通过引用传递 $i
,因此当您使用 $i++
:
$result = preg_replace_callback($pattern, function($matches) use (&$i, $replacement) {
return $replacement[$i++];
}, $str);
注意$i
前的&
。