2013-01-04 15 views
0

我是PHP的新手。我有一個下面的函數調用:如果函數在no中出現差異,該函數的行爲如何。的論點通過,沒有。在PHP中的函數定義中定義的參數?

​​

的功能定義如下:

function UpdateUserTestStatus($user_id, $test_id, $user_test_start_time, $user_test_time, $test_pack_id) { 
     if($user_id!='' && $test_id!='') { 
      $sql = " UPDATE ".TBL_TESTS_USERS." SET test_user_status='present', "; 
      $sql .= " test_user_start_time=".$user_test_start_time.", test_user_time_used=".$user_test_time; 
      $sql .= " WHERE test_user_user_id='".$user_id."' AND test_user_test_id=".$test_id; 
      $sql .= " AND test_pack_id='".$test_pack_id."' "; 

      $this->mDb->Query($sql); 

      return true; 
     } else 
      return false; 
    } 

所以我的問題是,是否在PHP中的工作具有不同無。在函數調用中有不同的參數。函數定義中存在的參數?請在這個問題上指導我。提前致謝。

回答

1

如果在定義中有較少的參數比調用中的參數更多,那麼多餘的參數將被忽略。

如果在定義中調用時有較少的參數,缺少的參數將被設置爲null併發出警告。

+0

感謝您的幫助@AndreKR。請告訴我,在我的函數的情況下,函數調用後變量$ test_pack_id的值是什麼?我的下一個疑問是更新查詢會在這種情況下執行嗎? – PHPLover

+0

是的,它將被執行並且'$ test_pack_id'將是'null',它被轉換爲字符串 - 將是一個空字符串。 – AndreKR

0

如果它們是可選的,則需要給參數默認值。例如:

function full_name($firstname, $lastname, $middlenames = NULL) { 
    $name = $firstname; 
    if ($middlenames !== NULL) { 
     $name .= ' '.$middlenames; 
    } 
    $name .= ' '.$lastname; 
    return $name; 
} 
echo full_name('John', 'Doe'); // John Doe 
echo full_name('John', 'Doe', 'Smith'); // John Smith Doe 
echo full_name('John'); // Warning! 

如果您沒有給出可選參數的默認值,那麼當您不使用參數時將會收到警告。

相關問題