如何删除数组的空值

时间:2014-07-04 13:14:21

标签: php arrays input laravel-4

我正在寻找一种从数组中删除空值的方法。

如果您看到下面的代码,我正在尝试删除在将其附加到模型之前传递的空值。但到目前为止还没有这样做。

当然,我在询问之前搜索了网页,所以我知道trim()没有达到预期的效果,以及array_map()和下面的代码。

寻找解决方案,谢谢!

if(Input::get('addcategorie'))
    {
        $new_cats = array();
        foreach(
            explode(
                ',', Input::get('addcategorie')) as $categorie) 
        {
            $categorie = Categorie::firstOrCreate(array('name' => $categorie));
            foreach($new_cats as $newcat)
            if($newcat == ' ' || $newcat == ' ' || $newcat == ''){
                unset($newcat);
            }
            array_push($new_cats, $categorie->id);
        }
        $workshop->categories()->attach($new_cats); 
    }

3 个答案:

答案 0 :(得分:4)

只需使用array_filter

$array = [
    0 => 'Patrick',
    1 => null,
    2 => 'Maciel',
    3 => '&nbsp',
    4 => ' '
];

$filtered = array_filter($array);

$nbsp = array_filter($array, function($element) {
    return $element == '&nbsp' OR  $element == ' ';
});

$clean = array_diff($filtered, $nbsp);

回报是:

array(2) {
  [0]=>
  string(7) "Patrick"
  [2]=>
  string(6) "Maciel"
}

此功能会从数组中删除所有 null,空和& nbsp

答案 1 :(得分:1)

您应该使用以下代码unset中的foreach

foreach($new_cats as $key => $newcat) {
    if(yourCondition) {
        unset($new_cats[$key])
    }
}

答案 2 :(得分:0)

foreach($new_cats as $newcat_i => $newcat) {
    $newcat = trim($newcat);

    if($newcat == ' ' || $newcat == '') {
        unset($new_cats[$newcat_i]);
    }
}

OR

$new_cats = array_filter(
    $new_cats, function ($value) {
        $value = trim($value);

        return $value != '' && $value != ' ';
    }
);

最终代码是:

if(Input::get('addcategorie')) {
    $new_cats = array();
    foreach(explode(',', Input::get('addcategorie')) as $categorie) {
        $categorie = Categorie::firstOrCreate(array('name' => $categorie));

        array_push($new_cats, $categorie->id);
    }

    $new_cats = array_filter(
        $new_cats, function ($value) {
            $value = trim($value);

            return $value != '' && $value != ' ';
        }
    );

    $workshop->categories()->attach($new_cats);
}