我的数组中的一些元素是基于用户提交的空字符串。我需要移除这些元素。我有这个:

foreach($linksArray as $link)
{
    if($link == '')
    {
        unset($link);
    }
}
print_r($linksArray);

但这并不奏效。$linksArray仍然有空元素。我也尝试过用empty()函数这样做,但结果是一样的。


当前回答

对于多维数组

$data = array_map('array_filter', $data);
$data = array_filter($data);

其他回答

function trim_array($Array)
{
    foreach ($Array as $value) {
        if(trim($value) === '') {
            $index = array_search($value, $Array);
            unset($Array[$index]);
        }
    }
    return $Array;
}

我使用下面的脚本从数组中删除空元素

for ($i=0; $i<$count($Array); $i++)
  {
    if (empty($Array[$i])) unset($Array[$i]);
  }

你可以这样做

array_filter($array)

array_filter: "如果没有提供回调函数,则所有等于FALSE的输入项都将被删除。"这意味着具有NULL, 0, '0', ", FALSE, array()值的元素也将被删除。

另一个选择是行动

array_diff($array, array(''))

它将删除值为NULL,”和FALSE的元素。

希望这对你有所帮助。

更新

这里有一个例子。

$a = array(0, '0', NULL, FALSE, '', array());

var_dump(array_filter($a));
// array()

var_dump(array_diff($a, array(0))) // 0 / '0'
// array(NULL, FALSE, '', array());

var_dump(array_diff($a, array(NULL))) // NULL / FALSE / ''
// array(0, '0', array())

总结如下:

0或'0'将删除0和'0' NULL, FALSE或"将删除NULL, FALSE和"

使用array_filter函数删除空值:

$linksArray = array_filter($linksArray);
print_r($linksArray);
$linksArray = array_filter($linksArray);

"如果没有提供回调函数,则所有等于FALSE的输入项将被删除。"——http://php.net/manual/en/function.array-filter.php