【问题标题】:How to insert key value pair in an existing array object using php/laravel?如何使用 php/laravel 在现有数组对象中插入键值对?
【发布时间】:2021-11-15 04:38:54
【问题描述】:

我的代码:

$finalArray = json_encode($loanTypeCount);

输出:

[{"name":"Salary","y":"6"},{"name":"Emergency","y":"1"}]

期望的输出:

[{"name":"Salary","y":6, "selected": true},{"name":"Emergency","y":1, "selected": true}]

插入"selected": true 键值对。在 laravel/php 中的实现方式是什么?

【问题讨论】:

  • 解码,向数组/对象添加值,重新编码。或者在编码之前先做。

标签: php arrays json laravel object


【解决方案1】:

如果是 Collection 实例,可以使用map()

$loanTypeCount->map(function($loan) {
    $loan->selected = true;
    return $loan;
});

【讨论】:

  • 如果您想要的结果是 JSON 编码的字符串,以 ->toJson() 结尾。
  • @Dan 他从(主要)一个集合开始,并在他的问题中对其进行 json_encode。
  • 如果我想将数据库中的值分配给 $loan->selected 怎么办?我想要一些东西 $loan->selected = $loan->loan_type;我已经尝试过了,但它返回 null。
  • @Eli 它应该可以工作,除非 $loan->loan_type 在您的数据库中为空
【解决方案2】:

基于N69S' solution,这里的示例以 JSON 编码字符串而不是集合实例开始并以修改后的实例结束。

$json = '[{"name":"Salary","y":"6"},{"name":"Emergency","y":"1"}]';

$arr = collect(json_decode($json, true))
    ->map(function ($item, $key) {
        $item['selected'] = true;

        return $item;
    })
    ->toJson();

【讨论】:

  • 如果我想将数据库中的值分配给 $loan->selected 怎么办?我想要一些东西 $loan->selected = $loan->loan_type;我已经尝试过了,但它返回 null。 – 伊莱
【解决方案3】:

纯php的简单解决方案:

$json = '[{"name":"Salary","y":"6"},{"name":"Emergency","y":"1"}]';

$obj=json_decode($json);
$obj[0]->selected = true;
$obj[1]->selected = true;

$newJson = json_encode($obj);
//[{"name":"Salary","y":"6","selected":true},{"name":"Emergency","y":"1","selected":true}]

也可以使用 foreach:

$json = '[{"name":"Salary","y":"6"},{"name":"Emergency","y":"1"}]';

foreach($obj=json_decode($json) as $key => $item){
  $obj[$key]->selected = true;
}

$newJson = json_encode($obj);
//[{"name":"Salary","y":"6","selected":true},{"name":"Emergency","y":"1","selected":true}]

【讨论】:

    猜你喜欢
    • 2020-03-30
    • 2019-12-04
    • 2017-01-20
    • 2020-03-12
    • 2018-12-01
    • 2013-07-05
    • 2014-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多