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

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

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


当前回答

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

其他回答

    $myarray = array_filter($myarray, 'strlen');  //removes null values but leaves "0"
    $myarray = array_filter($myarray);            //removes all null values

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

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

print_r($new_arr);

你可以使用array_filter来删除空元素:

$emptyRemoved = array_filter($linksArray);

如果你的数组中有(int) 0,你可以使用以下方法:

$emptyRemoved = remove_empty($linksArray);

function remove_empty($array) {
  return array_filter($array, '_remove_empty_internal');
}

function _remove_empty_internal($value) {
  return !empty($value) || $value === 0;
}

编辑:也许你的元素本身不是空的,而是包含一个或多个空格…在使用array_filter之前,可以使用以下命令

$trimmedArray = array_map('trim', $linksArray);
foreach($arr as $key => $val){
   if (empty($val)) unset($arr[$key];
}

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

$array_without_empty_values = array_filter($array);