Exemplo n.º 1
0
function array_merge_recursive_numeric($array1, $array2)
{
    foreach ($array2 as $key => $value) {
        if (!isset($array1[$key]) || !is_array($array1[$key])) {
            $array1[$key] = $value;
        } else {
            $array1[$key] = array_merge_recursive_numeric($array1[$key], $value);
        }
    }
    return $array1;
}
Exemplo n.º 2
0
 public function initialize()
 {
     // Checking module status - is it installed and active
     $this->check_status();
     if (!$this->manifest['active']) {
         return;
     }
     // Setting constants - if any
     if (isset($this->manifest['constants']) && is_array($this->manifest['constants']) && !empty($this->manifest['constants'])) {
         foreach ($this->manifest['constants'] as $constant_name => $constant_value) {
             defined($constant_name) or define($constant_name, $constant_value);
         }
     }
     // Adding vars - if any
     // Due to possible introduce of new constants in previous step vars is assigned via special method to honor new constants
     // Assignation can work with simple variables and with multidimensional arrays - for ex. 'sn_data[groups][test]'
     // New values from module variables will overwrite previous values (for root variables) and array elements with corresponding indexes (for arrays)
     // Constants as array indexes are honored - it's make valid such declarations as 'sn_data[ques][QUE_STRUCTURES]'
     $this->manifest['vars'] = $this->__assign_vars();
     if (!empty($this->manifest['vars'])) {
         $vars_assigned = array();
         foreach ($this->manifest['vars'] as $var_name => $var_value) {
             $sub_vars = explode('[', str_replace(']', '', $var_name));
             $var_name = $sub_vars[0];
             if (!isset($vars_assigned[$var_name])) {
                 $vars_assigned[$var_name] = true;
                 global ${$var_name};
             }
             $pointer =& ${$var_name};
             if (($n = count($sub_vars)) > 1) {
                 for ($i = 1; $i < $n; $i++) {
                     if (defined($sub_vars[$i])) {
                         $sub_vars[$i] = constant($sub_vars[$i]);
                     }
                     if (!isset($pointer[$sub_vars[$i]]) && $i != $n) {
                         $pointer[$sub_vars[$i]] = array();
                     }
                     $pointer =& $pointer[$sub_vars[$i]];
                 }
             }
             if (!isset($pointer) || !is_array($pointer)) {
                 $pointer = $var_value;
             } elseif (is_array(${$var_name})) {
                 $pointer = array_merge_recursive_numeric($pointer, $var_value);
             }
         }
     }
     // Overriding function if any
     global $functions;
     sn_sys_handler_add($functions, $this->manifest['functions'], $this);
     // Patching game menu - if any
     global $sn_menu_extra, $sn_menu_admin_extra;
     isset($this->manifest['menu']) and $this->__patch_menu($sn_menu_extra, $this->manifest['menu']);
     isset($this->manifest['menu_admin']) and $this->__patch_menu($sn_menu_admin_extra, $this->manifest['menu_admin']);
     global $sn_mvc;
     foreach ($sn_mvc as $handler_type => &$handler_data) {
         sn_sys_handler_add($handler_data, $this->manifest['mvc'][$handler_type], $this, $handler_type);
     }
     if (isset($this->manifest['i18n']) && is_array($this->manifest['i18n']) && !empty($this->manifest['i18n'])) {
         foreach ($this->manifest['i18n'] as $i18n_page_name => &$i18n_file_list) {
             foreach ($i18n_file_list as &$i18n_file_data) {
                 if (is_array($i18n_file_data) && !$i18n_file_data['path']) {
                     $i18n_file_data['path'] = $this->manifest['root_relative'];
                 }
             }
             if (!isset($sn_mvc['i18n'][$i18n_page_name])) {
                 $sn_mvc['i18n'][$i18n_page_name] = array();
             }
             $sn_mvc['i18n'][$i18n_page_name] += $i18n_file_list;
         }
     }
     if (!empty($this->manifest['javascript']) && is_array($this->manifest['javascript'])) {
         foreach ($this->manifest['javascript'] as $javascript_page_name => &$javascript_list) {
             !isset($sn_mvc['javascript'][$javascript_page_name]) ? $sn_mvc['javascript'][$javascript_page_name] = array() : false;
             foreach ($javascript_list as $script_name => &$script_content) {
                 $sn_mvc['javascript'][$javascript_page_name][$script_name] = $script_content;
             }
         }
     }
 }
Exemplo n.º 3
0
function array_merge_recursive_numeric($array1, $array2)
{
    foreach ($array2 as $key => $value) {
        //    if(!isset($array1[$key]) || !is_array($array1[$key])) {
        //      $array1[$key] = $value;
        //    } else {
        //      $array1[$key] = array_merge_recursive_numeric($array1[$key], $value);
        //    }
        $array1[$key] = !isset($array1[$key]) || !is_array($array1[$key]) ? $value : array_merge_recursive_numeric($array1[$key], $value);
    }
    return $array1;
}