使用点符号添加对象数组

Add array of objects with the dot notation

用下面的代码Arr::set($array, 'messages.to.email', $value);

这将生成如下输出:

{
  "messages": {
    "subject": "this is out email",
    "to": {
       "email": "myemail@gmail.com"
    }
  }
}

我的问题是我需要这个输出:

{
  "messages": [{
    "subject": "this is out email",
    "to": {
       "email": "myemail@gmail.com"
    }
  }]
}

作为对象数组的消息。我一直无法找到一种本地方式来做这件事,所以我正在考虑手动添加 messages[].to.email

之类的东西

我错过了什么吗?魔术助手或语法?实现我正在寻找的东西?

如果您为消息使用索引,它将强制它成为一个数组:

Arr::set($array, 'messages.0.to.email', $value);

这只是通过指定在 'messages' 和 'to' 之间添加另一个 level/container。可以命名为任何名称,但 0 在这里用于零索引数组,这将是 JSON 中的数组而不是对象。