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