src/geshi.php
protected function merge_arrays() {
        $arrays = func_get_args();
        $narrays = count($arrays);

        // check arguments
        // comment out if more performance is necessary (in this case the foreach loop will trigger a warning if the argument is not an array)
        for ($i = 0; $i < $narrays; $i ++) {
            if (!is_array($arrays[$i])) {
                // also array_merge_recursive returns nothing in this case
                trigger_error('Argument #' . ($i+1) . ' is not an array - trying to merge array with scalar! Returning false!', E_USER_WARNING);
                return false;
            }
        }

        // the first array is in the output set in every case
        $ret = $arrays[0];

        // merege $ret with the remaining arrays
        for ($i = 1; $i < $narrays; $i ++) {
            foreach ($arrays[$i] as $key => $value) {
                if (is_array($value) && isset($ret[$key])) {
                    // if $ret[$key] is not an array you try to merge an scalar value with an array - the result is not defined (incompatible arrays)
                    // in this case the call will trigger an E_USER_WARNING and the $ret[$key] will be false.
                    $ret[$key] = $this->merge_arrays($ret[$key], $value);
                } else {
                    $ret[$key] = $value;
                }
            }
        }

        return $ret;
    }
protected function merge_arrays() {
        $arrays = func_get_args();
        $narrays = count($arrays);

        // check arguments
        // comment out if more performance is necessary (in this case the foreach loop will trigger a warning if the argument is not an array)
        for ($i = 0; $i < $narrays; $i ++) {
            if (!is_array($arrays[$i])) {
                // also array_merge_recursive returns nothing in this case
                trigger_error('Argument #' . ($i+1) . ' is not an array - trying to merge array with scalar! Returning false!', E_USER_WARNING);
                return false;
            }
        }

        // the first array is in the output set in every case
        $ret = $arrays[0];

        // merege $ret with the remaining arrays
        for ($i = 1; $i < $narrays; $i ++) {
            foreach ($arrays[$i] as $key => $value) {
                if (is_array($value) && isset($ret[$key])) {
                    // if $ret[$key] is not an array you try to merge an scalar value with an array - the result is not defined (incompatible arrays)
                    // in this case the call will trigger an E_USER_WARNING and the $ret[$key] will be false.
                    $ret[$key] = $this->merge_arrays($ret[$key], $value);
                } else {
                    $ret[$key] = $value;
                }
            }
        }

        return $ret;
    }
protected function merge_arrays ( ) { $ arrays = func_get_args ( ) ; $ narrays = count ( $ arrays ) ; // check arguments // comment out if more performance is necessary (in this case the foreach loop will trigger a warning if the argument is not an array) for ( $ i = 0 ; $ i < $ narrays ; $ i ++ ) { if ( ! is_array ( $ arrays [ $ i ] ) ) { // also array_merge_recursive returns nothing in this case trigger_error ( 'Argument #' . ( $ i + 1 ) . ' is not an array - trying to merge array with scalar! Returning false!' , E_USER_WARNING ) ; return false ; } } // the first array is in the output set in every case $ ret = $ arrays [ 0 ] ; // merege $ret with the remaining arrays for ( $ i = 1 ; $ i < $ narrays ; $ i ++ ) { foreach ( $ arrays [ $ i ] as $ key => $ value ) { if ( is_array ( $ value ) && isset ( $ ret [ $ key ] ) ) { // if $ret[$key] is not an array you try to merge an scalar value with an array - the result is not defined (incompatible arrays) // in this case the call will trigger an E_USER_WARNING and the $ret[$key] will be false. $ ret [ $ key ] = $ this -> merge_arrays ( $ ret [ $ key ] , $ value ) ; } else { $ ret [ $ key ] = $ value ; } } } return $ ret ; }
Merges arrays recursively, overwriting values of the first array with values of later arrays

@since 1.0.8
Merges arrays recursively overwriting values of the first array with values of later arrays