'PHP: use for loop/foreach inside array_filter [duplicate]

I tried to use for-loop/foreach inside array_filter(). but the for loop/foreach doesn't work inside array_filter(). How can I use for-loop/foreach inside array_filter()?

$bookingData = array_values(array_filter($jsonBooking, function($bookingItem) {
    foreach ($orderData as $orderItem) {
        if ($bookingItem['order_id'] === $orderItem['id']) { 
            return $bookingItem;
        }
    }
}
php


Solution 1:[1]

Callback inside array_filter must returns bool (as condition to filter), be but you return an object. This should work.

$bookingData = array_values(array_filter($jsonBooking, function($bookingItem) use ($orderData) {
    foreach ($orderData as $orderItem) {
        if ($bookingItem['order_id'] === $orderItem['id']) { 
            return true;
        }
    }
    return false;
}

UPDATED: don't forget use statement

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1