2010-07-07 98 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

相關問題