Вход Регистрация
Файл: concrete5.7.5.6/concrete/src/Utility/Service/Arrays.php
Строк: 58
<?php
namespace ConcreteCoreUtilityService;

class 
Arrays {

    
/**
     * Fetches a value from an (multidimensional) array
     * @param array $array
     * @param string|int|array $keys Either one key or multiple keys
     * @param mixedvar $default the value that is returned if key is not found
     */
    
public function get(array $array$keys$default null)
    {
        
$keys $this->parseKeys($keys);

        if (
is_array($array) && $keys) {
            
$key array_shift($keys);
            if (
array_key_exists($key$array)) {
                
$value $array[$key];
                if (!
$keys) {
                    return 
$value;
                }

                if (
is_array($value)) {
                    return 
$this->get($value$keys$default);
                }
            }
        }
        return 
$default;
    }

    
/**
     * Sets a value in an (multidimensional) array, creating the arrays recursivly
     * @param array $array
     * @param unknown_type $keys
     * @param unknown_type $value
     */
    
public function set(array $array$keys$value)
    {
        
$keys $this->parseKeys($keys);

        if (
$keys) {
            
$key array_shift($keys);

            
// This is the last key we've shifted
            
if (!$keys) {
                
$array[$key] = $value;
            } else {
                
// There are more keys so this should be an array
                
if (!isset($array[$key]) || !is_array($array[$key])) {
                    
$array[$key] = array();
                }
                
$array[$key] = $this->set(
                    
$array[$key], $keys$value
                
);
            }
        }
        return 
$array;
    }

    
/**
     * Turns the string keys into an array of keys
     * @param string|array $keys
     * @return array
     */
    
private function parseKeys($keys)
    {
        if (
is_string($keys)) {
            if (
strpos($keys'[') !== false) {
                
$keys str_replace(']'''$keys);
                
$keys explode('['trim($keys'['));
            } else {
                
$keys = (array) $keys;
            }
        }
        return 
$keys;
    }

    
/**
     * Takes a multidimensional array and flattens it
     * @param array $array
     * @return array
     */
    
public function flatten(array $array) {
        
$tmp = array();
        foreach(
$array as $a) {
            if(
is_array($a)) {
                
$tmp array_merge($tmparray_flat($a));
            } else {
                
$tmp[] = $a;
            }
        }
        return 
$tmp;
    }

    
/**
     * Returns whether $a is a proper subset of $b
     */
    
public function subset($a$b) {
        if (
count(array_diff(array_merge($a,$b), $b)) == 0) {
            return 
true;
        } else {
            return 
false;
        }
    }

}
Онлайн: 2
Реклама