如何解决创建一个空集合在Laravel中引发错误
我正在将集合返回到视图,并且该集合并不总是满的。但是我认为我正在从该集合访问一个值。如果给定的集合为空,则会崩溃。
所以我的想法是,如果集合为空,则用这样的键和空值在我自己中填充它。
控制器:
if ($collection->isEmpty()) {
$collection->put('key1',"");
$collection->put('key2',"");
$collection->put('key3',"");
}else{
刀片:
<input type="text" class="form-control" name="key1" value="{{$collection->key1}}">
但是它一直在给我这个错误:
属性[key1]在此集合实例上不存在。 (查看:C:\ xampp \ htdocs \ Laravel ...
如果我使用dd($collection)
put
会得到
Collection {#510 ▼
#items: array:3 [▼
"key1" => ""
"key2" => ""
"key3" => ""
]
}
带有dd()
的 $collection['key1'];
甚至都不会掉进死区。
解决方法
您不能直接在集合对象上访问集合键。
相反,您必须使用如下数组访问语法:
$collection['key1']
或通过使用get
这样的方法:
$collection->get('key1')
get
方法的优点是,如果键未定义,则不会引发错误。
相反,它将返回默认值。通常,它是null
,但是可以使用函数的第二个参数来覆盖它:
$collection->get('key1','default')
假设您使用的是PHP 7或更高版本,则可以使用Null coalescing operator实现类似的功能,
$collection['key1'] ?? 'default'
有关更多信息,请查看文档:{{3}}
,Collection基本上是数组的包装器,因此您需要使用数组访问来获取基础值:
$collection['key1']
此外,不要过度使用集合。是的,它们可以通过复杂的数组操作提供很多帮助,但是它们也带来了开销。如果仅使用它来设置或访问键,请考虑使用基本数组或对象。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。