Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从另一个函数中获取变量_Php_Amazon_Mashup - Fatal编程技术网

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

Php 如何从另一个函数中获取变量,php,amazon,mashup,Php,Amazon,Mashup,我是PHP新手,我正在尝试与amazon和ebay创建一个web mashup。我的问题是我有一个名为“printCategoryItems()”的函数,它设置了一个名为$keyword的变量。我想在代码中的其他地方使用这个变量,但我无法让它工作。 比如说, 从函数返回变量 return $keyword; $query = printCategoryItems(); 并在调用函数时分配它 return $keyword; $query = printCategoryItems();

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



从函数返回变量

return $keyword;
$query = printCategoryItems();
并在调用函数时分配它

return $keyword;
$query = printCategoryItems();

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


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

< P>如果您想访问定义在其他地方但您想访问函数内部和外部的变量,请用<代码>全局< /代码>关键字:

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

        global $keyword = $_GET['keyword'];
        ...
    }
}
您可以在函数中使用关键字,因此函数内部的
$keywords
指函数外部的
$keywords

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

printCategoryItems();
var_dump($keyword);
这是因为函数中的变量属于函数的局部作用域,而不是全局作用域(我很久没有使用JAVA了,但我认为JAVA中的情况是一样的:函数中声明的变量从函数外部看不到)


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

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

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

作为一个半补充说明:另一个仍然使用全局变量的解决方案(同样不是一个好主意)是使用:

这里不再需要
global
关键字



最后,您应该阅读PHP文档,尤其是。

完全同意对
全局
的反对意见。无论你在哪里可以避免全局的,只要避免它就行了。不要想,但要避免。在PHP中,我想不出任何场景,在这种场景中,您无法避免
global

PHP不是Javascript,因此方法1不起作用。使用
global
被认为是不好的做法。@戈登:这意味着什么?在Javascript中,你可以在函数范围外定义一个变量,当在函数范围内调用时,它会冒泡,但在PHP中不是这样,所以在第一个示例中,函数内的$keyword不会引用函数外的$keyword。这是两个独立的变量。这将是解决此类问题的最佳方法