函数从数组中删除空元素,直到找到非空元素

时间:2013-03-02 01:18:09

标签: php

假设我有一个这样的数组:

$arr = array(0 => '', 1 => '', 2 => 'abc', 3 => '', 4 => '', 5 => 'def', 6 => '');

我想要一个函数,它将从数组中删除空值,直到它达到任何非空值。所以在这个例子中,结果将是:

array(0 => 'abc', 1 => '', 2 => '', 3 => 'def', 4 => '');

我可以创建自己的函数,但问题是.. PHP已经有了实现这一点的东西吗?是否有一种简单的方法可以尽可能少地使用资源?

索引关联并不重要。事实上,我更喜欢它重置

感谢。

2 个答案:

答案 0 :(得分:2)

我会建议这样的事情:

while($arr && !$arr[0]) array_shift($arr);

没有内置功能来执行此操作。

答案 1 :(得分:0)

对于那些想要对PHP的数组功能进行一点扩展的人来说,这是我发现有用的另外两个函数。

/**
 * @abstract Removes empty elements from the left side of the array until it hits a value.
 * @param array $array The array.
 * @return array|boolean Returns the modified array on success, otherwise false.
 */
function array_filter_left($array) {
    if (!is_array($array))
        return false;
    while ($array && !$array[0])
        array_shift($array);
    return $array;
}

/**
 * @abstract Removes empty elements from the right side of the array until it hits a value.
 * @param array $array The array.
 * @return array|boolean Returns the modified array on success, otherwise false.
 */
function array_filter_right($array) {
    if (!is_array($array))
        return false;
    while ($array && !$array[sizeof($array) - 1])
        array_pop($array);
    return $array;
}