<?PHP function test($v=2) { echo $v."\r\n"; } // 第已種調用方式 test([]); //output ---------- php ---------- Notice: Array to string conversion in D:\phpStudy\WWW\demo\test.php Array PHP Notice: Array to string conversion in D:\phpStudy\WWW\demo\test.php Output completed (2 sec consumed) - Normal Termination //第二種掉調用方式. call_user_func_array('test',[]); // output ---------- php ---------- 2 //測試結論 /** 知識點處理 : 1 在調用call_user_func_array的時候, 傳遞的全部的參數,都是以數組的方式進行傳遞的, 這個地方容易出現錯誤的理解, 該函數要求傳遞的是一個數組, 但, 在真實調用 test 函數的時候, 是將該array() 中的值依次傳遞給 test() 函數的, 因此,在第二種調用方式下, 實際是沒有傳遞任何參數的, 所以 test函數的調用過程當中使用了參數的默認值. 2 在處理定義了默認值的函數的時候,對參數的處理問題, 若是參數是定義了默認值, 此時若是傳遞一個空數組,那麼程序該如何處理, 這種狀況就是 第一種調用方式的輸出結果, php會釋放一個通知給用戶, 同時輸出一個參數的類型. **/ ?>