Php 如何删除数组的空值

Php 如何删除数组的空值,php,arrays,input,laravel-4,Php,Arrays,Input,Laravel 4,我正在寻找一种从数组中删除空值的方法 如果您看到下面的代码,我将尝试删除在将其附加到模型之前传递的空值。但到目前为止,情况并非如此 当然,我在询问之前搜索了网络,因此我知道trim()不能提供所需的效果以及array\u map()和下面的代码 正在寻找解决方案,谢谢 if(Input::get('addcategorie')) { $new_cats = array(); foreach( explode(

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

如果您看到下面的代码,我将尝试删除在将其附加到模型之前传递的空值。但到目前为止,情况并非如此

当然,我在询问之前搜索了网络,因此我知道
trim()
不能提供所需的效果以及
array\u 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); 
    }

您应该使用以下代码在
foreach
中取消设置

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

最终代码为:

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);
}

只需使用数组过滤器

$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、empty和

使用数组值方法。您能解释一下@MattBurrow吗?@nicolasherrard您发布了Javascript问题的链接谢谢您的回答,但这也是一样的。未删除空值。以及什么“”?:)请注意,空字符串或
false
的值也会从数组中删除。但我认为这是TS想要实现的最好的解决方案。不知何故,它仍然作为一个新的类别添加了空值。可能是“问题”在“firstOrCreate”吗?如果我遵循代码,这一切都是有意义的,它应该可以工作,但不知何故它没有。我很确定问题出在“firstOrCreate”。我将对此进行更深入的研究。谢谢@Jeroen可能是你的文件编码。如果你说的是真的,别忘了把问题标记为已解决。两个都试过了,结果还是一样的。“问题”可能是在“第一次或创建”时出现的吗?
$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"
}