public function getInvoiceItemsByType($type)
{
return $this->invoiceItems->filter(function ($invoice) use ($type) {
/** @var InvoiceItem $invoice */
return $invoice->getType() == $type;
}
);
}
public function getInvoiceItemsByType($type) {
foreach ($this->invoiceItems as $invoice) {
if ($invoice->getType() == $type) {
return $invoice;
}
}
return null;
}
这两个功能有区别吗?有人告诉我有一个,但我无法找到它是什么,以及一个功能而不是另一个功能将如何影响我的代码
答案 0 :(得分:6)
区别在于
return $this->invoiceItems->filter(function ($invoice) use ($type) {
/** @var InvoiceItem $invoice */
return $invoice->getType() == $type;
});
当找不到任何内容时,将返回匹配的所有项或空的ArrayCollection。
虽然
foreach ($this->invoiceItems as $invoice) {
if ($invoice->getType() == $type) {
return $invoice;
}
}
return null;
只返回匹配$invoice->getType() == $type
的数组的第一项,如果根本不存在则返回null。