首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP函数调用不起作用-假定的强制转换问题?

PHP函数调用不起作用-假定的强制转换问题?
EN

Stack Overflow用户
提问于 2010-08-09 01:20:40
回答 3查看 3.2K关注 0票数 0

为什么这在通过wd(1)调用时不起作用(它总是返回'-2')?

代码语言:javascript
复制
$zoom=$user['zoom'];
function wd($hrs){
  return $hrs*$zoom-2;
}

但这很好用:

代码语言:javascript
复制
function wd($hrs){
  return $hrs*30-2;
}

假设这是一个造型问题,我尝试了各种变体,比如

代码语言:javascript
复制
(int)$hrs * ((int)$zoom)

代码语言:javascript
复制
(int)$hrs * (float)$zoom

但是没有成功:

任何帮助都将不胜感激。

(顺便说一句,函数是否位于

代码语言:javascript
复制
include('header.php')

--尽管我在标题内和标题外都尝试过?)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-09 01:26:40

编辑:您应该将该变量作为参数传递给函数,但如果您绝对需要保持该变量是全局的,请执行以下操作。

您需要将全局变量纳入作用域:

代码语言:javascript
复制
$zoom=$user['zoom'];
function wd($hrs){
  global $zoom;
  return $hrs*$zoom-2;
}
票数 3
EN

Stack Overflow用户

发布于 2010-08-09 01:21:50

这不是类型转换的问题--这是因为您正在尝试使用一个out of scope变量。

虽然您需要阅读PHP文档以了解完整的细节,但在基本级别上,您只能访问在同一函数或方法中定义的变量。(尽管您可以使用global关键字来访问全局变量。也就是说,全局变量并不理想。)

因此,您可以简单地更新您的函数,将“zoom”作为参数传入,如下所示:

代码语言:javascript
复制
function wd($hrs, $zoom){
  return $hrs*$zoom-2;
}
票数 1
EN

Stack Overflow用户

发布于 2010-08-09 01:21:59

代码语言:javascript
复制
$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;
}

请参阅http://docs.php.net/language.variables.scope

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3435276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档