在foreach中合并多个对象

时间:2019-09-17 14:59:35

标签: php arrays json loops object

我在foreach中有一个或多个对象,我想将所有对象合并到$refJSON中。

$refObj = (object) array();

foreach($items as $item) { //here Im looping Two items
    $refObj->refId = $item->getId();
    $refObj->refLastName = $item->getLastName();
    $refObj->refPhone = $item->getPhone();
    $orderObj->refEmail = $item->getEmail();
}

$refJSON = json_encode($orderObj);
var_dump($refJSON);

输出:

//just the last item object
string(92) "{
              "refId":"2",
              "refLastName":"Joe",
              "refPhone":"xxxxxxx",
              "refEmail":"example@domaine.com"
             }"

期望的输出是合并所有ID为1和2的项目,如下所示:

[
  {
     "refId":"1",
     "refLastName":"Steve",
     "refPhone":"xxxxxxx",
     "refEmail":"foo@domaine.com"
  },
  {
    "refId":"2",
    "refLastName":"Joe",
    "refPhone":"xxxxxxx",
    "refEmail":"example@domaine.com"
  }

]

1 个答案:

答案 0 :(得分:3)

您每次都只是覆盖同一对象。构建每个对象并将其添加到数组(使用[])并编码结果...

$refOut = array();

foreach($items as $item) { //here Im looping Two items
    $refOut[] = ['refId' => $item->getId(),
        'refLastName' => $item->getLastName(),
        'refPhone' => $item->getPhone(),
        'refEmail' => $item->getEmail()];
}

$refJSON = json_encode($refOut);