我正在寻找一种从数组中删除空值的方法。
如果您看到下面的代码,我正在尝试删除在将其附加到模型之前传递的空值。但到目前为止还没有这样做。
当然,我在询问之前搜索了网页,所以我知道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);
}
答案 0 :(得分:4)
只需使用array_filter
:
$array = [
0 => 'Patrick',
1 => null,
2 => 'Maciel',
3 => ' ',
4 => ' '
];
$filtered = array_filter($array);
$nbsp = array_filter($array, function($element) {
return $element == ' ' 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);
}