1

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

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

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

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

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

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

谢谢。

4

2 回答 2

2

我会建议这样的事情:

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

没有内置函数可以做到这一点。

于 2013-03-02T01:19:58.393 回答
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;
}
于 2013-03-05T07:27:29.897 回答