2015-05-23 21 views
0

假設這是我提到的代碼的一個例子。包含2個參數的聲明函數是否仍然運行? (PHP)

<?php 
    function my_function($argument_1, $argument_2){ 
     echo $argument_1.' '.$argument_2; 
    } 
    my_function('This is argument_1'); 
?> 

的問題是,是否my_function仍,如果我只用1參數調用它提供在上面的代碼?

P.S.我已經在我的本地主機(XAMPP)上嘗試過它,並且它運行正常時發生了未定義的變量錯誤(仍然打印出$argument_1),但是我想知道這是一般情況還是因爲我的本地主機上的php配置

由於提前

+0

啓用錯誤報告會拋出一個錯誤'使用error_reporting(E_ALL || E_STRICT);'這是已經使用error_reporting啓用在開發這樣你就可以處理拋出的警告和注意事項錯誤的好習慣由PHP。 – aharen

回答

3

你可以只用一個參數調用它,如果在定義你的第二個定義默認值,例如像這樣:

function my_function($argument_1, $argument_2=''){ 
      echo $argument_1.' '.$argument_2; 
     } 
my_function('This is argument_1'); 

那麼,如果沒有提供第二個參數,它會以空字符串作爲第二個參數,不會拋出任何警告。

否則,你應該看到:

警告:缺少論據2創建my_function()

和:

注意:未定義的變量:ARGUMENT_2

而你的第二個論點仍然會起作用作爲空字符串。

在另一方面,你可以調用具有多個參數的功能比它的定義和func_get_args()功能檢索它們,例如:

function my_function(){ 
     echo implode(' ', func_get_args()); 
    } 
my_function('This is argument_1', 'This is argument_2'); 

輸出:

This is argument_1 This is argument_2