返回每个对象或一个arrayCollection之间的区别

时间:2018-05-07 09:09:51

标签: php symfony arraycollection

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;
}

这两个功能有区别吗?有人告诉我有一个,但我无法找到它是什么,以及一个功能而不是另一个功能将如何影响我的代码

1 个答案:

答案 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。