2011-10-17 18 views
0

這裏我試圖在foreach循環得到的值中加一個逗號。現在所有的值都彙集在一起​​,但我希望它能以逗號分隔的方式回顯。請告訴我我該做什麼。我知道,我必須使用implode,但我不知道如何在循環中完成它。如何在foreach中實現implode?

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

    } 

回答

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'])); 
0

只要使用它的語法是

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

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

由於$interested顯然是一個字符串,我假設你想連接所有這些與,

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

這比將數值存儲在新數組中更具性能,但是,您失去了一點靈活性。

2

這甚至可以做作爲一個班輪:

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

如果你只打算從$ _ POST特定值[「插入」],然後創建一個新的陣列和內爆的是:

$justSomeValues = array(); 

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

echo implode(', ', $justSomeValues); 

別的,就爆了整個$ _ POST [「插入」]這樣做:

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

把所有的值在數組中,並使用JOI N以回顯csv值:

$newarray = array(); 

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

echo JOIN(",",$newarray);