我正在尝试使用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);
}
答案 0 :(得分:0)
您没有受到任何影响,因为foreach
循环需要通过引用访问元素:
foreach($reg_sent as $key => &$value)
{
$value = reg_sent($value);
}
请注意,我在&
之前的循环中添加了$value
。否则,foreach
对值的副本进行操作,当在循环中修改该值时,您将永远不会在循环外看到该值。
答案 1 :(得分:0)
您需要通过引用传递变量:
foreach($reg_sent as $key=>&$value){
否则,您正在使用仅在循环中保留其值的本地副本。
答案 2 :(得分:0)
检查array_map。
$reg_sent = array_map("reg_sent", $reg_sent);
这将在数组的每个单元格上调用reg_sent
,并返回一个修改了值的新数组。您可以使用上述内容替换您声明的foreach
块。
答案 3 :(得分:0)
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);