Как реализовать выгрузку в foreach? - PullRequest
0 голосов
/ 17 октября 2011

здесь я пытаюсь добавить запятую в значения, полученные циклом foreach.теперь значения объединяются, но я хочу, чтобы он отображался через запятую.Пожалуйста, предложите мне, что я должен сделать.Я знаю, мне нужно использовать implode, но я не знаю, как сделать это в цикле.

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

    }

Ответы [ 6 ]

6 голосов
/ 17 октября 2011

Если вы хотите оставить свой код относительно нетронутым (хотя я исправил ваши запутанные отступы) ...

$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']));
2 голосов
/ 17 октября 2011

Это даже можно сделать как однострочник:

echo join(', ', array_filter($_POST['insert'],
    function ($str) { return preg_match('/^[-A-Z0-9\., ]+$/iD', $str); }));
0 голосов
/ 17 октября 2011

поместите все значения в массив и используйте JOIN для вывода значения CSV:

$newarray = array();

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

echo JOIN(",",$newarray);
0 голосов
/ 17 октября 2011

Если вас интересуют только конкретные значения из $ _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']);
0 голосов
/ 17 октября 2011

Поскольку $interested явно является строкой, я предполагаю, что вы хотите объединить все это с ,.

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

Это немного более производительно, чем сохранение значений в новом массиве, однако вы теряете немного гибкости.

0 голосов
/ 17 октября 2011

Просто используйте в качестве синтаксиса

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

}
echo implode(',',$array);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...