计算库精细(PHP)

时间:2015-11-14 17:03:00

标签: php

所以,这是我试图解决的问题(https://www.hackerrank.com/challenges/library-fine)。为了解决这个问题,我创建了一个简单的函数calculateFine并设置条件来计算罚款。那有什么问题呢?好吧,当我在我的机器上运行代码时,一切似乎都很好,但hackerrank不接受代码。我是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 )
            }
    }
?>

2 个答案:

答案 0 :(得分:1)

$actualDate[2]似乎有一个换行符。因此,如果你修剪它,你会得到正确的答案:

trim($actualDate[2])

但在这里修剪它会更好:

$_a = explode(" ",trim(fgets($_fp)));
$_b = explode(" ",trim(fgets($_fp)));

答案 1 :(得分:0)

我明白了,抱歉粗心。最后一个回音是$fine而不是$_fine。这就是为什么条件与某些测试用例不匹配的原因。三江源。