【发布时间】:2016-04-20 20:35:09
【问题描述】:
我有一个多维集合。我想迭代它并使用 map() 函数更改它的一些子对象和数组:https://laravel.com/docs/5.1/collections#method-map
示例内容:
[
{
'address': 'Somestreet 99'
'orders': [
{'id': 11},
{'id': 67}
]
}
]
例子
$deliveries = $delivery_addresses->map(function($delivery_address){
$orders = $delivery_address->orders->filter(function($order){
return $order->id == 67;
});
$delivery_address['address'] = 'A different street 44'
$delivery_address['orders'] = $orders;
$delivery_address['a_new_attribute'] = 'Some data...';
return $delivery_address;
});
预期结果:
[
{
'address': 'A different street 44'
'orders': [
{'id': 67}
],
'a_new_attribute': 'Some data...;
}
]
结果是只有字符串类型的变量会被改变。任何数组或对象都将保持不变。为什么会这样以及如何解决它?谢谢! =)
【问题讨论】:
-
您是否有一个示例集合可以提供您所描述的结果?修改地图内的各种数据应该会产生预期的结果,因为集合的元素只会被您从回调中返回的内容覆盖。
-
您能否发布您正在执行的真实代码,而不是一些伪代码? $old_collection.map 在 PHP 中不起作用
-
您能否发布一个想要的结果,以及您实际得到的结果?我也很好奇您为什么将 $delivery_address 作为对象访问,然后稍后将键分配为数组。
-
@Emn1ty Laravel 对它们一视同仁。
-
@Sturm -- 好吧,虽然我不知道我还发现了一大罐不应该打开的蠕虫。 :P 永远不应该让人们将对象视为数组。但这是另一天的话题,感谢您提供的信息。
标签: php dictionary collections laravel-4 eloquent