所以,这里是我试图解决这个问题(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