【问题标题】:PHP - Adding element dynamically to each json object in arrayPHP - 将元素动态添加到数组中的每个 json 对象
【发布时间】:2020-09-30 12:54:36
【问题描述】:

我正在使用 PHP 将 JSON 元素添加到数组中。

这是我的数据库表:

这是我的 json 数组:

array:8 [

  0 => {#305
    +"Queue": "755"
    +"Location": "427"
    +"MemberName": "PJSIP/427"
    +"Status": "5"
  }
  1 => {#306
    +"Queue": "752"
    +"Location": "427"
    +"MemberName": "PJSIP/427"
    +"Status": "5"
  }
  2 => {#304
    +"Queue": "750"
    +"Location": "427"
    +"MemberName": "PJSIP/427"
    +"Status": "5"
  }
]

现在我想将 callQueueName 添加到每个 json 对象。尝试使用 put 函数,如下代码所示,但未添加。

这是我的工作代码:

public static function getLoginAgentInfoTest(){
    $loginAgentInfo = 
      '[{"Queue":"755","Location":"427","MemberName":"PJSIP\/427","Status":"5"},
        {"Queue":"752","Location":"427","MemberName":"PJSIP\/427","Status":"5"},
        {"Queue":"750","Location":"427","MemberName":"PJSIP\/427","Status":"5"}]';

    $loginAgentInfo = json_decode($loginAgentInfo);
    
    $i = 0;
      
    foreach($loginAgentInfo[$i] as $loginData){ 
        
        $callQueueName = Tbcdrqueues::where('callqueue_no',$loginAgentInfo[$i]->Queue)->value('callqueue_name');
 
        $loginAgentInfo[$i].put('callQueueName',$callQueueName);
    
        $i++;
    }

    return $loginAgentInfo;
}

预期输出是:

array:8 [

  0 => {#305
    +"Queue": "755"
    +"Location": "427"
    +"MemberName": "PJSIP/427"
    +"Status": "5"
    +"callQueueName" : "New claims"
  }
  1 => {#306
    +"Queue": "752"
    +"Location": "427"
    +"MemberName": "PJSIP/427"
    +"Status": "5"
    +"callQueueName" : "Billing"
  }
  2 => {#304
    +"Queue": "750"
    +"Location": "427"
    +"MemberName": "PJSIP/427"
    +"Status": "5"
    +"callQueueName" : "Customer_Service"
  }
]

我怎样才能做到这一点?

【问题讨论】:

  • 看起来你这里只有一个普通数组,那么 $loginAgentInfo[$i].put(…) 到底应该是什么?
  • 顺便说一句,这是我见过的用 foreach 循环数组的最奇怪的方法之一。
  • 是的,您的问题出在put(...) 部分,您应该尝试: $loginAgentInfo[$i]['callQueueName'] = $callQueueName; //或者看看array_push()函数它应该可以工作。

标签: php laravel laravel-5 eloquent


【解决方案1】:
foreach($loginAgentInfo as $key => $loginData){ 
     $callQueueName = Tbcdrqueues::where('callqueue_no',$loginData->Queue)->value('callqueue_name');
     $loginAgentInfo[$key]->callQueueName = $callQueueName;
}

【讨论】:

  • 虽然这段代码可以回答这个问题,但最好解释一下实际的变化以及它为什么会起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-08
  • 2016-02-09
  • 1970-01-01
  • 2016-07-18
  • 2020-12-13
相关资源
最近更新 更多