2013-10-25 63 views
1

我知道這是一種noob問題,但有人可以向我解釋這個函數是怎麼回事?傳遞一個變量在php中的參數數量

// Prints "hello mutated world" 
function mutator($args=null) { 
$n=count($args); 
while($i<$n) $args[$i++] = "mutated"; 
} 
$a = "hello"; 
$b = "strange"; 
$c = "world"; 
mutator(array($a, &$b, $c)); 
echo "$a $b $c"; 

我想具體什麼是$ i和$ n的價值? $ args = null是什麼意思,它是如何適應while循環的?提前致謝。

+1

您沒有傳遞可變數量的參數,而是傳遞一個數組。 – 2013-10-25 21:31:43

+0

我明白了,但這並不能幫助我理解這裏發生了什麼。我注意到mutator數組中的變量$ b旁邊的&simple,但仍不明白爲什麼它傳遞了變異。 –

+0

然後,看看這個頁面將有助於:http://php.net/manual/en/language.references.php – 2013-10-25 21:39:47

回答

0

函數mutator帶有一個數組和,它的主體內,它改變所述陣列爲 「突變的」 串中的每個元素,並不返回任何東西。通常情況下,在該函數的上下文之外傳遞給mutator的數組不會有任何影響,事實上,該函數根本不明顯。但是,因爲元素$b通過引用傳遞(&$b),所以該函數能夠對其進行修改。這就是爲什麼你的代碼將打印「hello mutated world」。

$n由語句$n=count($args);,它返回在可變$args

$i元件的數量設定是將while循環中遞增變量($i++。)因爲$n是元素的數$args,while循環($i<$n)的條件意味着循環將爲$args中的每個元素運行一次。

$args=null在函數定義中只是提供了默認值null,供函數在不帶參數的情況下調用時使用。

-1

使用func_*_args() functions

function a() { 
    if (func_num_args() > 0) { 
     foreach (func_get_args() as $arg) { 
      var_dump($arg); 
     } 
    } 
} 

然後:

a('one', 'two', 'three', 'and so on...');