配列の空要素を削除して切り詰める。

PHPで配列の空要素を削除して切り詰めたい時。

$in = array("", "", "a", "", "b", "c", "");
$out = array_merge(array_diff($in, array("")));

要はarray_diff()で空要素との差分を取り、そのままだと添字が維持されたままなのでarray_merge()で添字を振り直すと。

Perlでarray_diff()は無さげだけど、普通にこれで行けるは行ける。

my @out = ();
my @in = ("", "", "a", "", "b", "c", "");
for($i = 0; $i < @in; $i++) {
	if($in[$i] ne "") { push(@out, $in[$i]); }
}