public static function arrayFilter($array, $arrayColumnKey, $filterExpression, $itsRegularExpression = false)
    {
        /*
         * No elements?
         * Nothing to do
         */
        if (empty($array)) {
            return [];
        }

        $effect = $array;

        foreach ($effect as $key => &$item) {
            if (!isset($item[$arrayColumnKey])) {
                continue;
            }

            $value = $item[$arrayColumnKey];

            if ($itsRegularExpression) {
                $matchesCount = preg_match($filterExpression, $value);
                $remove = 0 === $matchesCount;
            } else {
                if (is_string($value)) {
                    $value = sprintf('\'%s\'', $value);
                } elseif (is_bool($value)) {
                    if (true === $value) {
                        $value = 'true';
                    } else {
                        $value = 'false';
                    }
                }

                eval(sprintf('$isEqual = %s%s;', $value, $filterExpression));

                /** @var bool $isEqual */
                $remove = !$isEqual;
            }

            if ($remove) {
                unset($effect[$key]);
            }
        }

        return $effect;
    }