Понимание интересной функции обновления / замены массива - PullRequest
0 голосов
/ 31 декабря 2010

Я любитель PHP.

Эта функция массива является адаптацией функции, которую я заметил, читая эту статью .

Я подумал, что это интересный тип функции массива, но у меня есть вопрос о том, как она работает.

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 ]

1 голос
/ 31 декабря 2010

$ настройки перезаписываются часами = время в первой строке. Небо = синий никогда не попадает в массив.

Вы передаете sky = blue в функцию как $ settings, но затем $ settings снова определяется в первой строке функции.

0 голосов
/ 31 декабря 2010
    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 ) 
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...