Laravel - 从多维数组中删除具有 NULL 值的元素
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/42829169/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Laravel - Remove elements having NULL value from multidimentional array
提问by Dev
I am using Laravel 5.3
.
我正在使用Laravel 5.3
.
I have a multidimensional array
like:
我有一个multidimensional array
喜欢:
Array
(
[id] => 37141
[last_done_on] => []
[children] => Array
(
[0] => NULL /* This must be removed */
[1] => Array
(
[id] => 37142
[last_done_on] => Array()
[children] => Array()
)
[2] => Array
(
[id] => 37143
[last_done_on] => Array()
[children] => Array
(
[0] => Array
(
[id] => 37144
[last_done_on] => Array()
[children] => Array()
)
[1] => Array
(
[id] => 37145
[last_done_on] => Array()
[children] => Array()
)
)
)
[3] => Array
(
[id] => 37157
[last_done_on] => Array()
[children] => Array
(
[0] => Array
(
[id] => 37158
[last_done_on] => Array()
[children] => Array()
)
[1] => Array
(
[id] => 37159
[last_done_on] => Array()
[children] => Array
(
[0] => NULL /* This must be removed */
)
)
)
)
)
)
And I want to remove
the elements
that are NULL
. So the result should be like:
而我想remove
的elements
是NULL
。所以结果应该是这样的:
Array
(
[id] => 37141
[last_done_on] => []
[children] => Array
(
[0] => Array
(
[id] => 37142
[last_done_on] => Array()
[children] => Array()
)
[1] => Array
(
[id] => 37143
[last_done_on] => Array()
[children] => Array
(
[0] => Array
(
[id] => 37144
[last_done_on] => Array()
[children] => Array()
)
[1] => Array
(
[id] => 37145
[last_done_on] => Array()
[children] => Array()
)
)
)
[2] => Array
(
[id] => 37157
[last_done_on] => Array()
[children] => Array
(
[0] => Array
(
[id] => 37158
[last_done_on] => Array()
[children] => Array()
)
[1] => Array
(
[id] => 37159
[last_done_on] => Array()
[children] => Array
(
)
)
)
)
)
)
How to do this?
这该怎么做?
采纳答案by Rwd
If you want to remove the null
values but not the empty arrays you could do something like:
如果您想删除null
值而不是空数组,您可以执行以下操作:
function array_remove_null($item)
{
if (!is_array($item)) {
return $item;
}
return collect($item)
->reject(function ($item) {
return is_null($item);
})
->flatMap(function ($item, $key) {
return is_numeric($key)
? [array_remove_null($item)]
: [$key => array_remove_null($item)];
})
->toArray();
}
$newArray = array_remove_null($array);
Hope this helps!
希望这可以帮助!
回答by Ganesh K
In collection, use filter
在集合中,使用过滤器
some_collection->filter(function($value, $key) {
return $value != null;
});
回答by Onix
Give it a try:
试一试:
$yourArr= array_map('array_filter', $yourArr);
$yourArr= array_filter( $yourArr);
回答by dparoli
Try this:
尝试这个:
function array_filter_recursive($input)
{
foreach ($input as &$value)
{
if (is_array($value))
{
$value = array_filter_recursive($value);
}
}
return array_filter($input, function($var){return !is_null($var);} );
}