You are here

public static function ArrayUtils::filter in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 vendor/zendframework/zend-stdlib/src/ArrayUtils.php \Zend\Stdlib\ArrayUtils::filter()

Compatibility Method for array_filter on <5.6 systems

Parameters

array $data:

callable $callback:

null|int $flag:

Return value

array

File

vendor/zendframework/zend-stdlib/src/ArrayUtils.php, line 302

Class

ArrayUtils
Utility class for testing and manipulation of PHP arrays.

Namespace

Zend\Stdlib

Code

public static function filter(array $data, $callback, $flag = null) {
  if (!is_callable($callback)) {
    throw new Exception\InvalidArgumentException(sprintf('Second parameter of %s must be callable', __METHOD__));
  }
  if (version_compare(PHP_VERSION, '5.6.0') >= 0) {
    return array_filter($data, $callback, $flag);
  }
  $output = [];
  foreach ($data as $key => $value) {
    $params = [
      $value,
    ];
    if ($flag === static::ARRAY_FILTER_USE_BOTH) {
      $params[] = $key;
    }
    if ($flag === static::ARRAY_FILTER_USE_KEY) {
      $params = [
        $key,
      ];
    }
    $response = call_user_func_array($callback, $params);
    if ($response) {
      $output[$key] = $value;
    }
  }
  return $output;
}