为什么这在通过wd(1)调用时不起作用(它总是返回'-2')?
$zoom=$user['zoom'];
function wd($hrs){
return $hrs*$zoom-2;
}但这很好用:
function wd($hrs){
return $hrs*30-2;
}假设这是一个造型问题,我尝试了各种变体,比如
(int)$hrs * ((int)$zoom)或
(int)$hrs * (float)$zoom但是没有成功:
任何帮助都将不胜感激。
(顺便说一句,函数是否位于
include('header.php')--尽管我在标题内和标题外都尝试过?)
发布于 2010-08-09 01:26:40
编辑:您应该将该变量作为参数传递给函数,但如果您绝对需要保持该变量是全局的,请执行以下操作。
您需要将全局变量纳入作用域:
$zoom=$user['zoom'];
function wd($hrs){
global $zoom;
return $hrs*$zoom-2;
}发布于 2010-08-09 01:21:50
这不是类型转换的问题--这是因为您正在尝试使用一个out of scope变量。
虽然您需要阅读PHP文档以了解完整的细节,但在基本级别上,您只能访问在同一函数或方法中定义的变量。(尽管您可以使用global关键字来访问全局变量。也就是说,全局变量并不理想。)
因此,您可以简单地更新您的函数,将“zoom”作为参数传入,如下所示:
function wd($hrs, $zoom){
return $hrs*$zoom-2;
}发布于 2010-08-09 01:21:59
$zoom=$user['zoom'];
function wd($hrs){
// there is no variable $zoom within the function's visibility scope
// so you will get a "Notice: undefined variable 'zoom'" here.
return $hrs*$zoom-2;
}https://stackoverflow.com/questions/3435276
复制相似问题