2010-07-07 105 views
2

真的很简单我只是认为这是我。使用全局函数内部从包含文件中获取变量。 PHP

这是文件1.PHP

if(ctype_digit($_GET['id'])) 
{ 
    $item_id = "Hello"; 
} 
else 
{ 
    //Something 
} 

这是文件2.PHP

function item_show(){ 

     $item_query = "SELECT title FROM tbl_items WHERE id='" . mysql_real_escape_string($item_id) . "' "; 

} 

现在的问题是如何从1.PHP获得在函数内部的$item_id值2.php?

要添加的文件1.PHP和文件2.PHP都包含在的index.php

+0

是file1.php中包含的file1.php? – robjmills 2010-07-07 13:31:23

+0

file 1.php和file 2.php都包含在index.php – 2010-07-07 13:31:59

+0

中请记住,包含在PHP中的文件就像它们被复制并粘贴在那里一样,所以如果它们全部使用你的变量和方法一个文件。 – quantumSoup 2010-07-07 13:40:38

回答

2

有什么能够阻止你只是把它当作一个像这样的函数的参数?

item_show($item_id); 

或(非常哈克,不推荐):

function item_show(){ 
     global $item_id; 
     $item_query = "SELECT title FROM tbl_items WHERE id='" . mysql_real_escape_string($item_id) . "' "; 

} 
1

我想的index.php包括顺序file1.php以下的文件,file2.php。在这两个文件

function item_show() { 
    global $item_id; 
    $item_query = "SELECT title FROM tbl_items WHERE id='" . mysql_real_escape_string($item_id) . "' "; 
} 
+0

哦,所以我在函数中调用全局函数不在所包含的原始文件中? – 2010-07-07 13:41:02

+0

@Oliver Bayes-Shelton:如果函数没有声明,则函数不能访问全局变量。超级全局变量('$ _GET','$ _POST','$ GLOBALS')是不同的,因为它们可以被访问而不需要声明它们。 – kiamlaluno 2010-07-07 17:10:23

1
function item_show($item_id){} 

function item_show() 
{ 
    global $item_id; 
} 
0

使用

$GLOBALS['item_id'] 

,而不是:

在这种情况下,你可以使用下面的代码file2.php

$item_id 
1
  1. 使用require包含来自1.php的代码。
  2. 在1.php中,返回$ item_id的值。
  3. 从2.php调用1.php中的函数。
0
function item_show() 
{ 
    global $item_id; 
} 

,但我听说使用全局是不是一个好的编码方法。

+0

你是对的,全球通常不好。你可以很容易地修改这个函数来传递item id作为参数,这会更好。 – Mansfield 2012-11-19 19:45:16