ラムダ構文を使用して、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;
}
(ユーザーが持っているアイテムごとに、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 はメモリを消費しすぎて失敗します。
何か助けはありますか?私は何を間違えていますか?