繁体   English   中英

不增加匿名回调函数中的变量

[英]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);
  • 当前输出: /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之前的&

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM