我正在尝试使用 lambda 语法在 PHP 中使用数组过滤器函数编写排序/过滤器脚本。
这实现了我想要做的,但它看起来可以优化:
$offersReceivedProcessedByItem = array();
foreach ($this->currentSessionUser->items as $item) {
$receivedOffersOnItem = array();
foreach ($offersReceived as $offerReceived) {
if ($offerReceived->item->id === $item->id) {
$receivedOffersOnItem[$offerReceived->id] = $offerReceived;
}
}
offersReceivedProcessedByItem[$item->id] = $receivedOffersOnItem;
}
(对于用户拥有的每个项目,通过 offerReceived 数组进行过滤,如果它具有相同的 id,则将其添加到新数组中,如果这有意义吗?!)。
这是我正在尝试的:
$offersReceivedProcessedByItem = array();
foreach ($this->currentSessionUser->items as $item) {
$receivedOffersOnItem = array_filter($item->offers, function($offer){
return $offer->item->id === $item->id;
});
$offersReceivedProcessedByItem[$item->id] = $receivedOffersOnItem;
}
但是我得到 $item 是未定义的,我希望它是封闭的范围,所以我尝试将 $item 作为另一个参数传递,但后来我得到'缺少参数 2'。
我使用 Fuel 中内置的关系方法进行了尝试,但是 PHP 占用了太多内存并且失败了。
有什么帮助吗?我怎么了?