首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从另一个函数中获取变量

如何从另一个函数中获取变量
EN

Stack Overflow用户
提问于 2010-02-19 12:17:08
回答 4查看 23.5K关注 0票数 3

我是PHP的新手,我正在尝试用amazon和ebay创建一个web混搭。我的问题是,我有一个名为"printCategoryItems()“的函数,它设置一个名为$keyword的变量。我想在代码的其他地方使用这个变量,但是我无法让它工作。例如,

代码语言:javascript
运行
复制
<?php
function printCategoryItems(){
    if(isset($_GET['keyword'])){
        $keyword = $_GET['keyword'];
        ...
    }
}
...

$query = $keyword;

...

这是我想要做的事情,但我最终得到了一个未定义的关键字变量错误。我有办法做我想做的事吗?

谢谢你提前帮忙。

(仅具有Java编程经验)

EN

回答 4

Stack Overflow用户

发布于 2010-02-19 12:22:15

您可以在函数中使用global关键字,因此函数中的$keywords引用函数外部的$keywords

代码语言:javascript
运行
复制
function printCategoryItems() {
    global $keyword;
    if(isset($_GET['keyword'])){
        $keyword = $_GET['keyword'];
    }
}

printCategoryItems();
var_dump($keyword);

这是因为函数中的变量属于函数的局部作用域,而不是全局作用域(我很长时间没有做任何JAVA操作,但我认为在JAVA中是一样的:函数内部声明的变量在函数外部不可见)。

但是使用全局变量的通常不是一个好主意,.一个更好的解决方案是让您的函数return数据;例如:

代码语言:javascript
运行
复制
function printCategoryItems() {
    if(isset($_GET['keyword'])){
        return $_GET['keyword'];
    }
}

$keyword = printCategoryItems();
var_dump($keyword);

作为半方面的注意:另一个仍然使用全局变量的解决方案(同样不是一个好主意)是使用超全局阵列

代码语言:javascript
运行
复制
function printCategoryItems() {
    if(isset($_GET['keyword'])){
        $GLOBALS['keywords'] = $_GET['keyword'];
    }
}

printCategoryItems();
var_dump($GLOBALS['keywords']);

在这里,不再需要global关键字了。

最后,您应该阅读PHP文档--特别是函数部分

票数 8
EN

Stack Overflow用户

发布于 2010-02-19 12:21:03

从函数返回变量

代码语言:javascript
运行
复制
return $keyword;

并在调用该函数时分配它。

代码语言:javascript
运行
复制
$query = printCategoryItems();

此外,您可以将$query声明为空字符串,并通过引用将其传递给函数,例如printCategoryItems(&$query)。或者,您可以将代码包装到类中,并使$query成为实例变量,这样就可以使用$this->query = $keyword设置它。

但是,从一个名为printCategoryItems()的函数中,我不希望它设置某些内容,而是在屏幕上打印一些内容。您可能需要考虑函数的责任。

票数 2
EN

Stack Overflow用户

发布于 2010-02-19 13:05:45

完全同意反对global。无论什么时候你都可以避免global,只要避免它。不要思考,但要避免。在PHP中,我想不出任何场景,在这种情况下,您无法避免global

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

https://stackoverflow.com/questions/2296156

复制
相关文章

相似问题

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