【问题标题】:Laravel 5: similar to array_push but for JSONLaravel 5:类似于 array_push 但用于 JSON
【发布时间】:2015-08-06 15:16:47
【问题描述】:

使用 PHP (Laravel 5)。如果我将以下内容分配给 JSON:

$client->contactperson=['name'=>'John Doe', 'phone'=>'0123456789'];

在代码的其他地方我有另一个这样的:

$client->contactperson=['name'=>'Adam Doe', 'phone'=>'0123456789'];

结果是这样的,因为第二个赋值会覆盖第一个:

"contactperson": { 
        "name": "Adam Doe",
        "phone": "0123456789"
    }

是否有类似于 array_push 的数组,我可以使用 JSON 字符串来添加第二个赋值而不替换第一个赋值。所以它看起来像这样:

"contactperson": {"name": "John Doe",
        "phone": "0123456789"},
        {"name": "Adam Doe",
        "phone": "0123456789"}  

【问题讨论】:

  • 初始化数组并将数据作为数组管理并最终使用json_encode分配给$client->contactperson是否有任何问题
  • 使用 $client->contactperson[] = ['name'=>'John Doe', 'phone'=>'0123456789'];
  • 您来自服务器端的响应必须具有固定格式,以使其能够从客户端解析它。所以如果你想像 "contactperson": [{"name": "John Doe", "phone": "0123456789"}, {"name": "Adam Doe", “电话”:“0123456789”}]
  • 我不想通过将其更改为数组而失去雄辩的关系

标签: php arrays json laravel-5


【解决方案1】:

使用这个 -

$client->contactperson[] = ['name'=>'John Doe', 'phone'=>'0123456789'];

它会将它分配给一个新索引而不是替换旧索引。

【讨论】:

  • array_push() 也可以,但必须注意密钥。 :)
  • 但是array_merge() 不会知道你是如何使用它的。这也是这个任务的错误方法。
  • 错过了那个。 array_merge 也遇到了同样的问题。
  • $client->contactperson[] = ['name'=>'John Doe', 'phone'=>'0123456789'];给出以下错误:间接修改重载属性 App\models\Client::$contactperson has no effect
【解决方案2】:

b0s3 的回答不完整。

$client->contactperson = [$client->contactperson];
$client->contactperson[] = ['name' => 'John Doe', 'phone' => '0123456789']

第一个答案是这样的:

$client = [name, phone, [name, phone]]

除非你想要类似的东西

$client = [[name, phone], [name, phone]]

所以首先你应该创建一个多维数组。

【讨论】:

  • 我通过创建一个“数组数组”然后使用 array_merge 添加下一个来使其工作。感谢 Codel96!
  • 是的,对于“array of array”这个表达方式,法语很抱歉,不知道怎么称呼它。 array_merge 也是一个很好的解决方案,很高兴能提供帮助。编辑:哦,对了,就像法语一样,多维数组
猜你喜欢
  • 2013-05-12
  • 1970-01-01
  • 1970-01-01
  • 2016-01-05
  • 1970-01-01
  • 2012-01-27
  • 2012-01-07
  • 2017-04-23
  • 1970-01-01
相关资源
最近更新 更多