What are some best practices for structuring array_filter functions to make them more universal and adaptable?

When structuring array_filter functions to make them more universal and adaptable, it is important to use anonymous functions or callbacks to allow for dynamic filtering criteria. This way, the filtering logic can be easily customized without modifying the original array_filter function. Additionally, consider passing the filtering criteria as a parameter to the function to increase flexibility and reusability.

// Example of structuring array_filter function with dynamic filtering criteria
$numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

// Function to filter even numbers
$filterEven = function($value) {
    return $value % 2 == 0;
};

// Function to filter numbers greater than 5
$filterGreaterThanFive = function($value) {
    return $value > 5;
};

// Custom array_filter function with dynamic filtering criteria
function customArrayFilter($array, $filterFunction) {
    return array_filter($array, $filterFunction);
}

// Filter even numbers
$evenNumbers = customArrayFilter($numbers, $filterEven);
print_r($evenNumbers);

// Filter numbers greater than 5
$greaterThanFiveNumbers = customArrayFilter($numbers, $filterGreaterThanFive);
print_r($greaterThanFiveNumbers);