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

me1*_*123 3 php amazon mashup

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


<?php
function printCategoryItems(){
    if(isset($_GET['keyword'])){
        $keyword = $_GET['keyword'];
        ...
    }
}
...

$query = $keyword;

...
Run Code Online (Sandbox Code Playgroud)

这是我想要做的事情,但我最终得到关键字的未定义变量错误.有没有办法让我做我想做的事情?

感谢您的帮助.

(只有Java编程经验)

Pas*_*TIN 7

你可以global在函数中使用关键字,所以$keywords函数内部指的是$keywords函数外:

function printCategoryItems() {
    global $keyword;
    if(isset($_GET['keyword'])){
        $keyword = $_GET['keyword'];
    }
}

printCategoryItems();
var_dump($keyword);
Run Code Online (Sandbox Code Playgroud)

这是因为在函数内部变量属于函数的局部范围的,而不是全局范围(我没有做过很长一段时间的任何JAVA,但我认为这是在JAVA一样:一个函数内声明的变量从该功能的外部看不到).


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

function printCategoryItems() {
    if(isset($_GET['keyword'])){
        return $_GET['keyword'];
    }
}

$keyword = printCategoryItems();
var_dump($keyword);
Run Code Online (Sandbox Code Playgroud)


作为一个半边注:另一个解决方案,仍然使用全局变量(不是一个好主意,再次)将使用$GLOBALS超全局数组:

function printCategoryItems() {
    if(isset($_GET['keyword'])){
        $GLOBALS['keywords'] = $_GET['keyword'];
    }
}

printCategoryItems();
var_dump($GLOBALS['keywords']);
Run Code Online (Sandbox Code Playgroud)

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


并且,要完成,您应该阅读PHP文档 - 尤其是关于函数的部分.