我的数组中的一些元素是基于用户提交的空字符串。我需要移除这些元素。我有这个:
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_walk更适合这里
$linksArray = array('name', ' ', ' 342', '0', 0.0, null, '', false);
array_walk($linksArray, function(&$v, $k) use (&$linksArray){
$v = trim($v);
if ($v == '')
unset($linksArray[$k]);
});
print_r($linksArray);
输出:
Array
(
[0] => name
[2] => 342
[3] => 0
[4] => 0
)
我们确保即使用户添加了多个空格,空值也会被删除 我们还修剪了有效值中的空格 最后,只有(null), (Boolean False)和(")将被视为空字符串
至于False,可以删除它,因为AFAIK用户不能提交布尔值。
其他回答
foreach($arr as $key => $val){
if (empty($val)) unset($arr[$key];
}
我认为array_walk更适合这里
$linksArray = array('name', ' ', ' 342', '0', 0.0, null, '', false);
array_walk($linksArray, function(&$v, $k) use (&$linksArray){
$v = trim($v);
if ($v == '')
unset($linksArray[$k]);
});
print_r($linksArray);
输出:
Array
(
[0] => name
[2] => 342
[3] => 0
[4] => 0
)
我们确保即使用户添加了多个空格,空值也会被删除 我们还修剪了有效值中的空格 最后,只有(null), (Boolean False)和(")将被视为空字符串
至于False,可以删除它,因为AFAIK用户不能提交布尔值。
只有一句话: 更新(感谢@suther):
$array_without_empty_values = array_filter($array);
function trim_array($Array)
{
foreach ($Array as $value) {
if(trim($value) === '') {
$index = array_search($value, $Array);
unset($Array[$index]);
}
}
return $Array;
}
只是想为循环提供一个替代方案…还解决了密钥的差距……
在我的例子中,我希望在操作完成时保留顺序数组键(而不仅仅是我所关注的奇数)。对我来说,将代码设置为只寻找奇数键似乎很脆弱,而且不适合将来使用。)
我一直在寻找类似这样的东西:http://gotofritz.net/blog/howto/removing-empty-array-elements-php/
array_filter和array_slice的组合可以达到目的。
$example = array_filter($example);
$example = array_slice($example,0);
不知道效率或基准,但它是有效的。