【问题标题】:Understanding an interesting array update/replace function了解一个有趣的数组更新/替换函数
【发布时间】:2010-12-31 02:50:47
【问题描述】:

我是 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 ) 
}

为什么在第二种情况下 [sky] 不等于 'blue'?

谢谢。

【问题讨论】:

  • 这里有趣的是,如果你不覆盖$settings,那么尽管@987654325,sky 无论如何都会是blue @。令人惊讶的PHP!那最好值得一个问题!

标签: php arrays function


【解决方案1】:

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

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

【讨论】:

  • 是的,是的……我现在明白了。非常感谢,大卫。
【解决方案2】:
    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 ) 
    }

【讨论】:

  • 非常感谢。我想我现在明白了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-21
  • 1970-01-01
  • 2022-12-17
  • 2022-01-17
相关资源
最近更新 更多