所以,這裏是我試圖解決這個問題(https://www.hackerrank.com/challenges/library-fine)。爲了解決這個問題,我創建了一個簡單的函數calculateFine
並設置條件來計算罰款。那麼問題是什麼?那麼,當我在我的機器上運行代碼時,一切似乎都很好,但hackerrank不會接受代碼。我是PHP新手,功能概念對我來說有點令人困惑,但我試過。以下是我的代碼:計算圖書館精細(PHP)
<?php
$_fp = fopen("php://stdin", "r");
/* Enter your code here. Read input from STDIN. Print output to STDOUT */
$_a = explode(" ",fgets($_fp));
$_b = explode(" ",fgets($_fp));
// Initialising variable
$_fine = "";
// Calling Function
calculateFine($_a,$_b);
// Defining Function
function calculateFine($actualDate, $returnDate)
{
// Checking various conditions
if ($actualDate[0] <= $returnDate[0] && $actualDate[1] == $returnDate[1] && $actualDate[2] == $returnDate[2])
{
$_fine = 0;
echo $_fine;
}
elseif($actualDate[0] > $returnDate[0] && $actualDate[1] == $returnDate[1] && $actualDate[2] == $returnDate[2])
{
$_late = $actualDate[0] - $returnDate[0];
$_fine = 15*$_late;
echo $_fine;
}
elseif($actualDate[1] > $returnDate[1] && $actualDate[2] == $returnDate[2])
{
$_late = $actualDate[1] - $returnDate[1];
$_fine = 500*$_late;
echo $_fine;
}
elseif($actualDate[2] > $returnDate[2])
{
$_fine = 10000;
echo $_fine;
}
else
{
$_fine = 0;
echo $fine; // Updated (This is the undefined variable causing error)
}
}
?>
當創建一個像這樣的函數時,函數返回值通常會更好。所以在你的第一個'if'語句中,你可以簡單地把'return 0',等等其他條件。然後你可以像你這樣回顯你的函數的輸出:'echo calculateFine($ _ a,$ _ b);'。這也導致不必初始化$ _fine變量。 –
@Thijis試過這個,但編譯器(在HackerRank)顯示錯誤的答案。 – Vivek