我是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编程经验)
你可以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文档 - 尤其是关于函数的部分.
| 归档时间: |
|
| 查看次数: |
15800 次 |
| 最近记录: |