如何在foreach中实现内爆?

时间:2011-10-17 06:12:59

标签: php html post

这里我试图在foreach循环获取的值中添加逗号。现在这些值都在一起,但是我希望它以逗号分隔的方式回显。请建议我,我要做什么。我知道,我必须使用内爆,但我不知道如何在循环中完成它。

foreach($_POST['insert'] as $interested) {
    if(!preg_match('/^[-A-Z0-9\., ]+$/iD', $interested)) continue; 
        echo $interested;

    }

6 个答案:

答案 0 :(得分:6)

如果你想保持你的代码相对不受影响(虽然我修复了令人困惑的缩进)...

$interestedValues = array();

foreach($_POST['insert'] as $interested) {
    if(!preg_match('/^[-A-Z0-9\., ]+$/iD', $interested)) continue; 

    $interestedValues[] = $interested;

}

echo implode(',', $interestedValues);

......或者因为一个衬里看起来很时髦......

echo implode(',', preg_grep('/^[-A-Z\d., ]+$/iD', $_POST['insert']));

答案 1 :(得分:2)

这甚至可以作为单行代码完成:

echo join(', ', array_filter($_POST['insert'],
    function ($str) { return preg_match('/^[-A-Z0-9\., ]+$/iD', $str); }));

答案 2 :(得分:0)

只需使用其语法

$array=array();
foreach($_POST['insert'] as $interested) {
if(!preg_match('/^[-A-Z0-9\., ]+$/iD', $interested)) continue; 
  $array[]=$interested;  

}
echo implode(',',$array);

答案 3 :(得分:0)

由于$interested显然是一个字符串,我假设您想要将所有这些与,连接起来。

$counter = 0;
foreach($_POST['insert'] as $interested) {
    if(!preg_match('/^[-A-Z0-9\., ]+$/iD', $interested)) 
        continue; 
    if($counter++)
        echo ", ";
    echo $interested;
}

这比将值存储在新数组中更有效,但是,您会失去一点灵活性。

答案 4 :(得分:0)

如果您只对$ _POST ['insert']中的特定值感兴趣,请创建一个新数组并将其内爆:

$justSomeValues = array();

foreach($_POST['insert'] as $interested) {
    if(!preg_match('/^[-A-Z0-9\., ]+$/iD', $interested)) continue; 
        $justSomeValues[] = $interested;
}

echo implode(', ', $justSomeValues);

否则,要破坏整个$ _POST ['insert']执行此操作:

echo implode(', ', $_POST['insert']);

答案 5 :(得分:0)

将所有值放在数组中并使用JOIN来回显csv值:

$newarray = array();

foreach($_POST['insert'] as $interested) {
    if(!preg_match('/^[-A-Z0-9\., ]+$/iD', $interested)) continue; 
        $newarray[] = $interested;
    }

echo JOIN(",",$newarray);