PHP: отображать запятую после каждого элемента, кроме последнего. Используя операторе for и взрываться/взорваться'
у меня есть этот простой цикл for для Эха массива:
for ($i = 0; $i < count($director); $i++) {
echo '<a href="person.php?id='.$director[$i]["id"].'">'.$director[$i]["name"].'</a>';
}
проблема здесь в том, что когда в массиве находится более одного элемента, я получаю все Эхо без какого-либо пространства между ними. Я хочу отделить каждый элемент запятой, кроме последнего.
Я не могу использовать implode
поэтому я ищу другое решение
12 ответов
Это должно работать. Лучше я думаю позвонить count()
один раз а не на каждой итерации цикла.
$count = count($director);
for ($i = 0; $i < $count; $i++) {
echo '<a href="person.php?id='.$director[$i]["id"].'">'.$director[$i]["name"].'</a>';
if ($i < ($count - 1)) {
echo ', ';
}
}
Если я правильно помню синтаксис PHP, это также может помочь:
$str = "";
for ($i = 0; $i < count($director); $i++) {
$str .= '<a href="person.php?id='.$director[$i]["id"].'">'.$director[$i]["name"].'</a>, ';
}
$str = trim($str, ", ");
лучшим решением является полное исключение цикла. Я проигнорировал создание ссылок ради ясности. Обратите внимание, что я не верю, что неспособность использовать implode является условием. Я считаю, что это простое утверждение: "Я не вижу, как сделать эту работу с помощью implode, поэтому я сделал это так."
$last_entry = array_pop($director);
if(count($director) > 0) {
echo implode(", ", $director) . " and " . $last_entry;
} else {
echo $last_entry;
}
мой предпочтительный метод:
$links = [];
for ($i = 0; $i < count($director); $i++) {
$links[] = '<a href="person.php?id='.$director[$i]["id"].'">' .
$director[$i]["name"] . '</a>';
}
echo implode(', ', $links);
или
$output = "";
for ($i = 0; $i < count($director); $i++) {
if ($output) {
$output .= ", ";
}
$output .= '<a href="person.php?id='.$director[$i]["id"].'">' .
$director[$i]["name"].'</a>';
}
echo $output;
$number = count($director);
for ($i = 0; $i < $number; $i++) {
echo '<a href="person.php?id='.$director[$i]["id"].'">'.$director[$i]["name"].'</a>';
if($i < $number - 1){
echo ', ';
}
}
Как насчет чего-то вроде этого? Вы можете сохранить результат "count ($director)" в переменной вне цикла, чтобы вам не приходилось тратить ресурсы, пересчитывая его каждый раз, когда цикл выполняется.
for($i=0; $i<count($director);$i++){
echo '<a href="person.php?id='.$director[$i]["id"].'">'.$director[$i]["name"].'</a>';
if($i!=count($director)-1){echo ',';}
}
Ну foreach
содержит for
: -)
foreach ($director as $key => $person) {
if ($key !== 0) echo ', ';
echo '<a href="person.php?id='.urlencode($person['id']).'">'.$person['name'].'</a>';
}
// RENAMED $director to $directors
$links = '';
foreach ($directors AS $director) {
$links .= "<a href=\"person.php?id={director['id']}\">{$director['name']}</a>";
if (true !== empty($links)) {
$links .= ', ';
}
}
echo $links;
foreach ($strings as $string){
$superstring .= $string . ', ';
}
$echostring = substr_replace($superstring ,"",-2);
echo $echostring;
вот мое решение для 2 строк
// Create your Array
$cities = Array("Rome", "Florence", "Venice");
// implode them
$list = trim(implode (", ", $cities)) ;
// remove last comma
$list = substr ( $list,0 ,strlen( $list ) );
//check result
die ($list);
$count =1;
for ($i = 0; $i
если ($count!=1) {
echo',';
}
эхо.'' $ директор[$i] ["имя"].";
$счетчик++;
}