Skip to content
Snippets Groups Projects
ArrayHelper.php 845 B
Newer Older
Pavel's avatar
Pavel committed
<?php

namespace IQDEV\ElasticSearch\Helper;

class ArrayHelper
{
    /**
     * Recursively filter an array
     *
     * @param array $array
     * @param callable|null $callback
     *
     * @return array
     */
    public static function array_filter_recursive(array $array, ?callable $callback = null): array
    {
        $array = is_callable($callback) ? array_filter($array, $callback) : array_filter($array);
        foreach ($array as $key => &$value) {
Pavel's avatar
Pavel committed
            if (is_array($value)) {
                $value = call_user_func([__CLASS__, __FUNCTION__], $value, $callback);

                if (!empty($value)) {
                    $value = self::array_filter_recursive($value, $callback);
                } else {
                    unset($array[$key]);
Pavel's avatar
Pavel committed
                }
            }
        }

        return $array;
    }
}