Php 如何从集合内的数组中忽略或删除null元素

Php 如何从集合内的数组中忽略或删除null元素,php,laravel,Php,Laravel,我想从这个集合中删除第二个key/pair元素。如何实现这一点?您可以使用$collection->filter()删除空值 Collection {#363 ▼ #items: array:3 [▼ 0 => Tag {#376 ▶} 1 => null 2 => Tag {#374 ▶} ] } 请参阅。在处理字符串数组时,只需使用array_filter(),即可方便地处理所有这些问题: $filtered = $collection-&

我想从这个集合中删除第二个key/pair元素。如何实现这一点?

您可以使用
$collection->filter()
删除空值

Collection {#363 ▼
  #items: array:3 [▼
    0 => Tag {#376 ▶}
    1 => null
    2 => Tag {#374 ▶}
  ]
}

请参阅。

在处理字符串数组时,只需使用array_filter(),即可方便地处理所有这些问题:

$filtered = $collection->filter(function ($value, $key) {
    return $value != null;
});
请记住,如果未提供回调,则将删除所有等于FALSE的数组项(请参见转换为布尔值)。因此,如果需要保留精确字符串“0”的元素,则需要自定义回调:

print_r(array_filter($linksArray));
//PHP<5.3
打印(数组过滤器($linksArray,create_函数('$value','return$value!=='';'));
//PHP5.3及更高版本
打印(数组过滤器($linksArray,函数($value){return$value!='';}));

另外,
Collection@filter
将删除
null
s,而无需使用任何闭包进行检查。类似于
array\u filter
删除
null
s的方式

// PHP < 5.3
print_r(array_filter($linksArray, create_function('$value', 'return $value !== "";')));

// PHP 5.3 and later
print_r(array_filter($linksArray, function($value) { return $value !== ''; }));

使用
Collection@filter

如果严格从集合中只删除空值而不删除零(0)。 例:[10,10,0,9,空]

$filtered = $collection->filter();
// nulls will be removed
输出:[10,10,0,10]

正如其他人所说,您可以使用just filter()方法而不使用回调来删除与FALSE([],0,NULL,FALSE,)等效的值


正式文档:

或查看过滤空值时无需添加回调。执行
$filtered=$collection->filter()
也可以。这将返回空数组[]
$filtered = $collection->filter(function($value, $key) {
            return !is_null($value);
        });