рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдБ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ рдФрд░ рдпрд╣ рдЖрдЙрдЯрдкреБрдЯ рдХреНрдпрд╛ рд╣реИ:
$ рд╢реБрд░реБрдЖрдд = рдорд╛рдЗрдХреНрд░реЛрдЯрд╛рдЗрдо ( рд╕рдЪ ) ;
$ res1 = array ( ) ;
рдХреЗ рд▓рд┐рдП ( $ i = 0 ; $ i < 1000 ; $ i ++ ) {
$ res1 = array_merge ( $ res1 , array ( 1 , 2 , 3 ) ) ;
}
рдЗрдХреЛ "1000 рдорд░реНрдЬ:" ред Ceil ( ( microtime ( true ) - $ start ) * 1000 ) ред "рдПрдордПрд╕ \ рдПрди " ;
$ рд╢реБрд░реБрдЖрдд = рдорд╛рдЗрдХреНрд░реЛрдЯрд╛рдЗрдо ( рд╕рдЪ ) ;
$ рдореЗрдЧрд░ = рд╕рд░рдгреА ( ) ;
рдХреЗ рд▓рд┐рдП ( $ i = 0 ; $ i < 1000 ; $ i ++ ) {
$ toMerge [ ] = рд╕рд░рдгреА ( 1 , 2 , 3 ) ;
}
$ res2 = call_user_func_array ( 'array_merge' , $ toMerge ) ;
рдЗрдХреЛ "call_user_func_array ('array_merge', ..):" ред Ceil ( ( microtime ( true ) - $ start ) * 1000 ) ред "рдПрдордПрд╕ \ рдПрди " ;
рдЧреВрдВрдЬ "рдХреНрдпрд╛ рдпрд╣ рд╕рдЪ рд╣реИ рдХрд┐ рджреЛ рд╕рд░рдгрд┐рдпрд╛рдБ рд╕рдорд╛рди рд╣реИрдВ? рдпрд╣" рд╣реИ ;
var_export ( $ res2 === $ res1 ) ;
рдЗрдХреЛ "ред \ n " ;
~ % php ~/tmp/array_merge.php
1000 merges: 980ms
call_user_func_array('array_merge',..): 11ms
Is it true that the two arrays are equal? It is true.
рдмрдЪрдд рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВред рд╢рд╛рдпрдж рдХреЛрдИ рдХрд╛рдо рдЖрдПрдЧрд╛ред