我的数组中的一些元素是基于用户提交的空字符串。我需要移除这些元素。我有这个:
foreach($linksArray as $link)
{
if($link == '')
{
unset($link);
}
}
print_r($linksArray);
但这并不奏效。$linksArray仍然有空元素。我也尝试过用empty()函数这样做,但结果是一样的。
我的数组中的一些元素是基于用户提交的空字符串。我需要移除这些元素。我有这个:
foreach($linksArray as $link)
{
if($link == '')
{
unset($link);
}
}
print_r($linksArray);
但这并不奏效。$linksArray仍然有空元素。我也尝试过用empty()函数这样做,但结果是一样的。
当前回答
另一行代码从数组中删除空(""空字符串)元素。
$array = array_filter($array, function($a) {return $a !== "";});
注意:这段代码故意保留null、0和false元素。
或者你可能想先修剪数组元素:
$array = array_filter($array, function($a) {
return trim($a) !== "";
});
注意:这段代码还删除了null和false元素。
其他回答
foreach($linksArray as $key => $link)
{
if($link === '')
{
unset($linksArray[$key]);
}
}
print_r($linksArray);
投票最多的答案是错误的,或者至少不完全正确,因为OP只谈论空白字符串。下面是详细的解释:
空是什么意思?
首先,我们必须对空的意思达成一致。你的意思是过滤掉:
空字符串("")? 严格错误的值?($element === false) 虚假的价值观?(即0,0.0,"","0",NULL, array()…) PHP的empty()函数?
如何过滤出这些值
只过滤空字符串:
$filtered = array_diff($originalArray, array(""));
为了只过滤出严格的假值,你必须使用回调函数:
$filtered = array_diff($originalArray, 'myCallback');
function myCallback($var) {
return $var === false;
}
回调对于想要过滤掉“假”值的任何组合也很有用,除了一些。(例如,过滤每个null和false,等等,只留下0):
$filtered = array_filter($originalArray, 'myCallback');
function myCallback($var) {
return ($var === 0 || $var === '0');
}
第三种情况和第四种情况是相同的(最后为了我们的目的),为此你必须使用默认值:
$filtered = array_filter($originalArray);
$linksArray = array_filter($linksArray);
"如果没有提供回调函数,则所有等于FALSE的输入项将被删除。"——http://php.net/manual/en/function.array-filter.php
另一行代码从数组中删除空(""空字符串)元素。
$array = array_filter($array, function($a) {return $a !== "";});
注意:这段代码故意保留null、0和false元素。
或者你可能想先修剪数组元素:
$array = array_filter($array, function($a) {
return trim($a) !== "";
});
注意:这段代码还删除了null和false元素。
$a = array(1, '', '', '', 2, '', 3, 4);
$b = array_values(array_filter($a));
print_r($b)