PHP:在foreach循环中附加数组,其中元素的条件为匹配的elementId



我有一个具有不同代码号的数组,每个代码可以引用不同的项。然而,每个代码可以引用许多项目,而每个项目可以有许多代码(即代码和项目之间的多对多关系(。

我有项目,我有项目代码,现在我想通过代码段中的循环将正确的代码附加到正确的项目上,如下所示(每个$itemCode对象都包括一个$item.Id属性(:

foreach($itemCodes as $itemCode) {
$itemCodesForItem = [];
foreach($items as $item) {
if($itemCode->getItem()->getId() == $item->getId()) {
array_push($itemCodesForItem, $itemCode->getCode());
$item->setCode($itemCodesForItem); // Assign with array with all appended codes for a specific item
}
}
}

这里的问题是,每个匹配的代码都会覆盖上一个匹配的代码,所以最终它只为每个项目分配一个代码。但是,如果一个项目有几个代码,我希望所有这些代码都附加在特定项目的数组中,而不仅仅是最后一个匹配的代码。有人知道如何在这里捕捉并将正确的代码附加到正确的项目上吗?

好的,所以最后我用以下代码完成了它:

foreach($items as $item) {
$itemCodesForItem = [];
foreach($itemCodes as $itemCode) {
while($itemCode->getItem()->getId() == $item->getId()) {
array_push($itemCodesForItem, $itemCode->getCode());
$item->setCode($itemCodesForItem);
break;
}
}
}

最新更新