0

好的,这是我的代码:

function payCalc($hours, $wage, $overtime, $paycheck) {
if ($hours <= 40) {
    $paycheck = $hours * $wage;
}
else {
    $paycheck = $hours * $overtime;
}
return $paycheck;

}

$name = $_POST['name'];
$dept = $_POST['dept'];
$hours = $_POST['hours'];
$wage = $_POST['wage'];

$paycheck = payCalc($hours, $wage, $overtime, $paycheck);

$overTime = $wage * 1.5;
print "Your paycheck for this period is:"; 
print $paycheck; 
print ".";

问题是我在 $paycheck 上不断收到未定义的变量错误。据我所知,我已经正确设置了 if/else,但它没有返回$paycheck。这意味着在“ print $paycheck;”行上,它无法打印。我错过了什么?

编辑:还有更多内容,但这只是吐出$nameand$dept变量的回声线。

4

7 回答 7

3

你需要声明

$paycheck = payCalc();

这样您就可以从函数中获得结果。

还要考虑:

if ($hours <= 40) {
    $paycheck = $hours * $wage;
}
else {
    $paycheck = $hours * $overtime;

也就是说,填充 $paycheck。

最后,考虑其他用户的建议:如果要使用外部变量,则需要将它们发送到函数:

function payCall($hours, $wage, $overtime) {
   ...
}

然后在调用函数时使用它们:

$paycheck = payCalc($hours, $wage, $overtime);
于 2013-02-18T09:42:19.840 回答
0

在函数中,您不能从外部调用变量。

你的函数不可能知道$paycheck.

像这样做:

function payCall($hours, $wage, $overtime, $paycheck) {
 //DO STUFF
return $paycheck;
}

并这样称呼它:

echo payCall($hours, $wage, $overtime, $paycheck);
于 2013-02-18T09:41:53.530 回答
0

试试这个:

 if( isset($_POST['name']) && isset($_POST['dept']) && isset($_POST['hours']) && isset($_POST['wage']){
    $paycheck = '';
    $name = $_POST['name'];
    $dept = $_POST['dept'];
    $hours = $_POST['hours'];
    $wage = $_POST['wage'];

    $overTime = $wage * 1.5;

    function payCalc() {
        if ($hours <= 40) {
        $paycheck =$hours * $wage;
    }
    else {
        $paycheck = $hours * $overtime;
    }
    return $paycheck;
}

print "Your paycheck for this period is:"; 
print payCalc(); 
print ".";
}
于 2013-02-18T09:43:47.560 回答
0

好吧,您还没有真正在函数中设置变量“paycheck”。

在 $hours * $overtime 和 $hours * $wage 之前设置变量 $paycheck。

但是,在能够访问这些之前,您必须将它们设置为参数。

代码应该是这样的:

$name = $_POST['name'];
$dept = $_POST['dept'];
$hours = $_POST['hours'];
$wage = $_POST['wage'];

$overTime = $wage * 1.5;

function payCalc($hours, $wage, $overtime) {
    if ($hours <= 40) {
        $paycheck = $hours * $wage;
    }
    else {
        $paycheck = $hours * $overtime;
    }
    return $paycheck;
}

print "Your paycheck for this period is:"; 
print payCalc($hours, $wage, $overTime); 
print ".";

该函数现在返回在 if 语句和 else 语句中设置的变量“paycheck”。

这对你有意义吗?

最好的,

尼古拉杰普森

于 2013-02-18T09:46:41.090 回答
0
/// COPY AND PASTE THE BELOW CODE

$paycheck = '';

$name = $_POST['name'];

$dept = $_POST['dept'];

$hours = $_POST['hours'];

$wage = $_POST['wage'];

$overTime = $wage * 1.5;

function payCalc($paycheck,$hours,$wage,$overTime) {

    if ($hours <= 40) {

       $paycheck = $hours * $wage;

    }

    else {

       $paycheck =  $hours * $overTime;

    }

    return $paycheck;

}


print "Your paycheck for this period is:"; 

print payCalc($paycheck,$hours,$wage,$overTime); 

print ".";
于 2013-02-18T09:49:22.107 回答
-1

尝试使用全局关键字。

$paycheck = '';
$name = $_POST['name'];
$dept = $_POST['dept'];
$hours = $_POST['hours'];
$wage = $_POST['wage'];

$overTime = $wage * 1.5;

function payCalc() {
    global $hours,$wage,$overtime,$paycheck;
    if ($hours <= 40) {
        $hours * $wage;
    }
    else {
        $hours * $overtime;
    }
    return $paycheck;
}
于 2013-02-18T09:42:56.090 回答
-1

您需要使用global关键字来引用全局变量:

$paycheck = '';
$name = $_POST['name'];
$dept = $_POST['dept'];
$hours = $_POST['hours'];
$wage = $_POST['wage'];

$overTime = $wage * 1.5;

function payCalc() {
    global $hours, $wage, $overtime;
    $paycheck = 0;
    if ($hours <= 40) {
        $paycheck = $hours * $wage;
    }
    else {
        $paycheck = $hours * $overtime;
    }
    return $paycheck;
}


$paycheck = payCalc();
print "Your paycheck for this period is:"; 
print $paycheck; 
print ".";
于 2013-02-18T09:46:03.730 回答