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;
}
есть ли разница между этими двумя функциями? Кто-то сказал мне, что есть один, но я не могу найти, что именно, и как одна функция вместо другой повлияет на мой код
Разница в том, что
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
или ноль, если он вообще не существует.
Других решений пока нет …