Как добавить информацию между циклами? - PullRequest
0 голосов
/ 29 января 2011
$data = explode(",", $str);
$names = array();
for ( $i = 0; $i < count($data); $i+=3) {  
    $names[] = $data[$i];
}

Предположим, что это дает результат:

mathews,neil,ambrose,glen,ethan

Я хочу добавить and непосредственно перед ambrose, поэтому окончательный результат:

mathews,neil, and ambrose

Ответы [ 3 ]

2 голосов
/ 29 января 2011
$data = explode(",", $str);
for ($i = 0; $i<count($data)-1; $i++) {
   $sentence = $sentence.$data[$i].", ";
}
$sentence = $sentence."and ".end($data).".";
echo $sentence;

Что это будет делать, так это хранить все имена, кроме последнего, в переменной с запятыми, а затем в конце добавляет последнее с "и" перед ним.

Затем эта переменная - $ предложение - выводится (отображается).

РЕДАКТИРОВАТЬ: просто отобразить только первые три результата.

$data = explode(",", $str);
echo $data[0].", ".$data[1].", and ".$data[2];

$ data [x] просто возвращает одно изимена, которые хранятся в порядке.

2 голосов
/ 29 января 2011

Поскольку вы уже используете счетчик $i, вы можете просто выполнить следующую проверку:

if ($i === count($data) - 2) {
    echo ' and ';
}

... или что-то еще.Это не должно быть echo.

0 голосов
/ 29 января 2011

Вам следует избегать циклов для операций такого типа, они добавляют ненужный уровень сложности вашему коду.

// put the last element of $data to $lastName, and remove the last element from $data
$lastName = array_pop($names);
echo join(',',$names) . ' and ' . $lastName;

Есть также много вариантов одной строки, как это:

// replace the last ",name" with " and name"
echo preg_replace('/(,)[a-z]+$/', ' and ', join(',', $names));

Но они не очень понятны неопытным разработчикам PHP.

edit , Если вы счастливы отказаться от массива, который уже есть в вашем примере, вы можете сделать это.

$str = "mathews,neil,ambrose,glen,ethan";
$names = array_slice(explode(',', $str), 0, 3);
$lastName = array_pop($names);
echo join(',', $names) . ' and ' . $lastName;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...