PHP从数组的两侧删除空项

Cos*_*smi 1 php arrays list

我有以下数组:

Array 
(
[0] => 
[1] => 
[2] => apple
[3] => 
[4] => orange
[5] => strawberry
[6] => 
)
Run Code Online (Sandbox Code Playgroud)

如何从开头和结尾删除空项目,而不是从内部删除?最终的数组应该如下所示:

Array 
(
[0] => apple
[1] => 
[2] => orange
[3] => strawberry
)
Run Code Online (Sandbox Code Playgroud)

Jon*_*Jon 10

这是一个方便的方法:

while (reset($array) == '') array_shift($array);
while (end($array) == '') array_pop($array);
Run Code Online (Sandbox Code Playgroud)

看到它在行动.

强制性评论:我使用与空字符串的松散比较,因为它看起来像你打算给你的例子.如果您想更准确地了解要删除哪些元素,请相应地自定义条件.

更新:奖金标志PHP丑陋的代码,可能会更快

在我看来,如果在数组的开头和结尾有很多空元素,上面的方法可能不是最快的,因为它逐个删除它们,在每一步中重新索引数组,等等.所以这是一个解决方案,适用于任何阵列,只需一步即可完成修剪.警告:丑陋.

$firstNonEmpty = 0;
$i = 0;
foreach ($array as $val) {
    if ($val != '') {
        $firstNonEmpty = $i;
        break;
    }
    ++$i;
}

$lastNonEmpty = $count = count($array);
end($array);
for ($i = $count; $i > 0; --$i) {
    if (current($array) != '') {
        $lastNonEmpty = $i;
        break;
    }
    prev($array);
}

$array = array_slice($array, $firstNonEmpty, $lastNonEmpty - $firstNonEmpty);
Run Code Online (Sandbox Code Playgroud)

看到它在行动.