如何在foreach语句中调用函数

时间:2012-07-18 16:35:01

标签: php arrays function foreach

我正在尝试使用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);
}

4 个答案:

答案 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);