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

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

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


当前回答

$my = ("0"=>" ","1"=>"5","2"=>"6","3"=>" ");   

foreach ($my as $key => $value) {
    if (is_null($value)) unset($my[$key]);
}

foreach ($my as $key => $value) {
    echo   $key . ':' . $value . '<br>';
} 

输出

1:5 2:6

其他回答

只有一句话: 更新(感谢@suther):

$array_without_empty_values = array_filter($array);

另一行代码从数组中删除空(""空字符串)元素。

$array = array_filter($array, function($a) {return $a !== "";});

注意:这段代码故意保留null、0和false元素。


或者你可能想先修剪数组元素:

$array = array_filter($array, function($a) {
    return trim($a) !== "";
});

注意:这段代码还删除了null和false元素。

$my = ("0"=>" ","1"=>"5","2"=>"6","3"=>" ");   

foreach ($my as $key => $value) {
    if (is_null($value)) unset($my[$key]);
}

foreach ($my as $key => $value) {
    echo   $key . ':' . $value . '<br>';
} 

输出

1:5 2:6

根据你的方法,你可以在另一个数组中捕获这些元素,然后像下面这样使用,

foreach($linksArray as $link){
   if(!empty($link)){
      $new_arr[] = $link
   }
}

print_r($new_arr);

使用array_filter函数删除空值:

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