了解一个有趣的数组更新/替换功能

时间:2010-12-31 02:50:48

标签: php arrays function

我是一名PHP爱好者。

这个数组函数是我在阅读article时注意到的函数的改编。

我认为这是一种有趣的数组函数,但我对它的工作方式有疑问。

my_func( array( 'sky' => 'blue' ) );

function my_func( array $settings = array() ) 
{  
   $settings = $settings + array( 'grass'=>'green','sky'=>'dark' );
   print_r( $settings ) ;  
   // outputs: Array ( [sky] => blue [grass] => green )  
}

但.....................

my_func( array( 'sky' => 'blue' ) );

function my_func( array $settings = array() ) 
{ 
   $settings = array( 'clock'=>'time' ) ;
   $settings = $settings + array( 'grass'=>'green','sky'=>'dark' );
   print_r( $settings ) ;  
   // outputs: Array ( [clock] => time [grass] => green [sky] => dark ) 
}

为什么[天空]在第二个实例中不等于'蓝色'?

感谢。

2 个答案:

答案 0 :(得分:1)

$设置被第一行的clock = time覆盖。 sky = blue永远不会进入数组。

你将sky = blue作为$ settings传递给函数,但是然后在函数的第一行再次定义$ settings。

答案 1 :(得分:0)

    my_func( array( 'sky' => 'blue' ) );

    function my_func( array $settings = array() ) 
    { 
print_r($settings);// It will print Array ( [sky] => blue ) .After that it is over written
       $settings = array( 'clock'=>'time' ) ;
       $settings = $settings + array( 'grass'=>'green','sky'=>'dark' );
       print_r( $settings ) ;  
       // outputs: Array ( [clock] => time [grass] => green [sky] => dark ) 
    }