我正试图使用foreach语句来运行一个函数,该函数使用正则表达式preg_replace。有人能帮忙吗,因为我的方法不起作用。。
$reg_sent is an array
function reg_sent($i){
$reg_sent = "/[^A-Za-z0-9.,'n'r ]/";
return preg_replace($reg_sent, '', $i);
}
foreach($reg_sent as $key=>$value){
$value = reg_sent($value);
}
检查array_map。
$reg_sent = array_map("reg_sent", $reg_sent);
这将在数组的每个单元格上调用reg_sent
,并返回一个值已修改的新数组。您可以用上述内容替换您所述的foreach
块。
您不会受到任何影响,因为foreach
循环需要通过引用访问元素:
foreach($reg_sent as $key => &$value)
{
$value = reg_sent($value);
}
注意,我在$value
之前添加了循环中的&
。否则,foreach
对值的副本进行操作,当在循环中修改该副本时,您将永远不会在循环外看到该值。
您需要通过引用传递变量:
foreach($reg_sent as $key=>&$value){
否则,您将对仅在循环中保留其值的本地副本进行操作。
function reg_sent($i){
$reg_sent = "/[^A-Za-z0-9.,'n'r ]/";
return preg_replace($reg_sent, '', $i);
}
foreach($reg_sent as $key => &$value){
$value = reg_sent($value);
}
unset($value);
var_dump($reg_sent);