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