PHP: Sonuncusu hariç her elemandan sonra virgül görüntüler.

7 Cevap php

Ben bir dizi yankı döngü için bu basit var:

for ($i = 0; $i < count($director); $i++) {
   echo '<a href="person.php?id='.$director[$i]["id"].'">'.$director[$i]["name"].'</a>';
}

Burada sorun, birden fazla eleman dizide zaman zaman ben arasında herhangi bir boşluk olmadan yankılandı her şeyi elde olmasıdır. Ben sonuncusu hariç, bir virgül ile her öğe ayırmak istiyoruz.

Ben kullanamazsınız implode bu yüzden başka bir çözüm arıyorum

7 Cevap

Bu çalışması gerekir. Ben her döngü tekrarında count() defa ziyade aramak için düşünüyorum iyidir.

$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 ', ';
   }
}

Ben doğru PHP sözdizimi hatırlıyorum, bu da yardımcı olabilir:

$str = "";
for ($i = 0; $i < count($director); $i++) {
   $str .= '<a href="person.php?id='.$director[$i]["id"].'">'.$director[$i]["name"].'</a>, ';
}
$str = trim($str, ", ");

Benim tercih yöntemi:

$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;

Daha iyi bir çözüm tamamen döngü kaçınmaktır. Ben netlik uğruna bina bağlantıları göz ardı ettik. Ben çöktüğünü kullanmak için yetersizlik bir durumdur inanmıyorum unutmayın. Ben, basit bir ifadesi olduğuna inanıyorum "Ben çöktüğünü kullanarak bu işi yapmak için nasıl göremiyorum, bu yüzden onun yerine bu şekilde yaptım."

$last_entry = array_pop($director);
if(count($director) > 0) {
    echo implode(", ", $director) . " and " . $last_entry;
} else {
    echo $last_entry;
}
$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 ', ';
    }
}

Üzgünüz, Tom Haigh tarafından cevap görmediler, biz hemen aynı geldi.

Nasıl böyle bir şey? Sen bunu döngü her çalıştırıldığında yeniden hesaplama kaynaklarını israf etmek zorunda kalmamak döngü dışında bir değişkene "sayısı ($ yönetmen)" sonucunu saklamak isteyebilirsiniz.

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 ',';}
}

Peki, foreach for :-) içeriyor

foreach ($director as $key => $person) {
    if ($key !== 0) echo ', ';
    echo '<a href="person.php?id='.urlencode($person['id']).'">'.$person['name'].'</a>';
}