Цикл Foreach, но для первого ключа сделайте что-нибудь еще - PullRequest
3 голосов
/ 21 июля 2010

Извините, если это сбивает с толку.Мне сложно выразить словами знание языка PHP для начинающих.

Я использую следующий цикл foreach:

foreach ($_POST['technologies'] as $technologies){
    echo ", " . $technologies;
}

, который выдает:

Первый, Второй, Третий

Что я хочу:

Первый, Второй, Третий

Все, что мне нужно, это чтобы циклпропустите echo ", " для первого ключа.Как мне это сделать?

Ответы [ 3 ]

21 голосов
/ 21 июля 2010

Вы можете извлечь индексы каждого элемента массива, используя =>, и не печатать запятую для первого элемента:

foreach ($_POST['technologies'] as $i => $technologies) {
    if ($i > 0) {
        echo ", ";
    }

    echo $technologies;
}

Или, что еще проще, вы можете использовать implode ($ glue, $ штук) , которая «возвращает строку, содержащую строковое представление всех элементов массива в том же порядке, с клейкой строкой между каждым элементом»:

echo implode(", ", $_POST['technologies']);
4 голосов
/ 21 июля 2010

Для общего случая выполнения чего-либо в каждой, но первой итерации цикла foreach:

$first = true;
foreach ($_POST['technologies'] as $technologies){
    if(!$first) {
      echo ", ";
    } else {
      $first = false;
    }
    echo $technologies;
}

, но implode () - лучший способ решить вашу конкретную проблему:

echo implode(", ", $_POST['technologies']);
1 голос
/ 21 июля 2010

Вам нужен какой-то флаг:

$i = 1;
foreach ($_POST['technologies'] as $technologies){
  if($i > 1){
    echo ", " . $technologies;
  } else {
    echo $technologies;
  }
  $i++;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...