PHP: ta bort tomma värden från array?

Tråden skapades och har fått 2 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Boden
  • 2013-10-30 12:56

Jag har en array som ser ut såhär:

[0] = 'Volvo'
[1] = 'Saab'
[2] = ''
[3] = 'BMW'

Jag loopar igenom arrayen:

for($x=0;$x<count($bilar);$x++)
     {
	echo $bilar[$x];
	echo "<br>";
     }

Det tomma inlägget skapar en tom rad mellan saab och bmw. Hur gör jag för att ta bort tomma inlägg så arrayen ser ut såhär istället:

0] = 'Volvo'
[1] = 'Saab'
[2] = 'BMW'

Tacksam för hjälp

@jensm: Om du vill göra det samtidigt som du loopar över listan så kan du hoppa till nästa iteration med continue. Alternativt så kan du köra listan genom array_filter() innan du skriver ut den:

foreach($arr as $row)
{
    if($row === "")
        continue;

    echo $row."\n";
}
$arr = array_filter($arr, function($v) { return $v !== ""; });

foreach($arr as $row)
{
    echo $row."\n";
}

Foreach är ofta smidigare än for, och du undviker att for($x=0; $x<count($bilar); $x++) kontrollerar listans storlek inför varje iteration. Vill du ändå använda en for-loop så är det bättre att kontrollera storleken på en egen rad eller i det första uttrycket: for($i = 0, $c = count($arr); $i < $c; ++$i).

Det går också att göra ännu enklare, array_filter() rensar automatiskt bort tomma (false-ish) element om man inte ger den en filterfunktion.

<?php foreach(array_filter($arr) as $row): ?>
    <?= $row ?></br>
<?php endforeach; ?>
1
Bevaka tråden