在PHP中过滤数组
我正在尝试使用lambda语法在PHP中使用数组过滤器函数编写排序/过滤器脚本 这实现了我想要做的,但看起来可以优化:在PHP中过滤数组,php,Php,我正在尝试使用lambda语法在PHP中使用数组过滤器函数编写排序/过滤器脚本 这实现了我想要做的,但看起来可以优化: $offersReceivedProcessedByItem = array(); foreach ($this->currentSessionUser->items as $item) { $receivedOffersOnItem = array(); foreach ($offersReceived as $offerReceived) {
$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;
}
(对于用户拥有的每个项目,通过offersReceived数组进行筛选,如果该项目具有相同的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占用了太多内存,并且失败了
有什么帮助吗?我做错了什么?闭包不知道它创建的环境,除非你告诉它
$receivedOffersOnItem = array_filter($item->offers, function($offer) use($item){
return $offer->item->id === $item->id;
});
注意use
-语句
手册的链接就这样!根据我的Javascript经验,我认为这是一个范围问题,但我从未听说过“use”语句。关于PHP还有很多需要学习的地方。谢谢你的帮助!