PHP:在foreach循环中附加数组,其中元素的条件与elementId匹配
我有一个具有不同代码号的数组,而每个代码又可以引用不同的项。但是,每个代码可以引用多个项目,而每个项目可以有多个代码(即代码和项目之间的多对多关系) 我有项目,我有项目代码,现在我想通过代码段中的循环将正确的代码附加到正确的项目,如下所示(每个$itemCode对象包括$item.Id属性):PHP:在foreach循环中附加数组,其中元素的条件与elementId匹配,php,arrays,loops,append,Php,Arrays,Loops,Append,我有一个具有不同代码号的数组,而每个代码又可以引用不同的项。但是,每个代码可以引用多个项目,而每个项目可以有多个代码(即代码和项目之间的多对多关系) 我有项目,我有项目代码,现在我想通过代码段中的循环将正确的代码附加到正确的项目,如下所示(每个$itemCode对象包括$item.Id属性): 这里的问题是,每个匹配的代码都会覆盖上一个匹配的代码,因此最终它只为每个项目分配一个代码。但是,如果一个项目有多个代码,我希望所有这些代码都附加到特定项目的数组中,而不仅仅是最后一个匹配的代码。有人知道如
这里的问题是,每个匹配的代码都会覆盖上一个匹配的代码,因此最终它只为每个项目分配一个代码。但是,如果一个项目有多个代码,我希望所有这些代码都附加到特定项目的数组中,而不仅仅是最后一个匹配的代码。有人知道如何在这里捕获正确的代码并将其附加到正确的项目吗?好的,因此我最终使用以下代码获得了它:
foreach($items as $item) {
$itemCodesForItem = [];
foreach($itemCodes as $itemCode) {
while($itemCode->getItem()->getId() == $item->getId()) {
array_push($itemCodesForItem, $itemCode->getCode());
$item->setCode($itemCodesForItem);
break;
}
}
}
打字错误:
if($itemCode->getItem()->getId()=$item->getId())
。您是赋值而不是比较。无论哪种方式,都会导致致命错误,因此我怀疑这是问题的原因。你能给我一个输入数组的小样本和期望的结果吗?我的不好。我现在已经修复了比较。比较已经修复,但问题仍然存在。正如我在第二条评论中所说的,请提供一些示例值来测试代码。
foreach($items as $item) {
$itemCodesForItem = [];
foreach($itemCodes as $itemCode) {
while($itemCode->getItem()->getId() == $item->getId()) {
array_push($itemCodesForItem, $itemCode->getCode());
$item->setCode($itemCodesForItem);
break;
}
}
}