public static function dimensions(array $data)
    {
        if (empty($data)) {
            return 0;
        }
        reset($data);
        $depth = 1;
        while ($elem = array_shift($data)) {
            if (is_array($elem)) {
                $depth += 1;
                $data =& $elem;
            } else {
                break;
            }
        }
        return $depth;
    }