2010-12-04 80 views
3

我試圖找到這一個解決方案:PHP不能傳遞變量包含的文件

file1.php

$name = "Jacob"; 
include ("file2.php"); 

file2.php

Hi there! <?php echo $name ?> 

輸出

Hi There! Notice: Undefined variable: name in /volume1/web/test/file2.php on line 9 

需要幫助,請://

+0

剛剛嘗試過,它的工作方式應該如此。你可以嘗試使$ name成爲一個全局變量,但這會帶來其他問題。 – Roadmaster 2010-12-04 23:30:43

+0

這工作正常;的確,這是多少個PHP模板系統的工作。 – 2010-12-05 00:23:15

回答

4

確保您的網址file1.php結束,而不是file2.php或包含file2.php其他一些文件。此外,請嘗試將這兩個文件都精確地降至您在此處發佈的內容(在file1.php的開頭加上<?php),以排除周圍的代碼。

9

您的代碼正常工作。

如果你得到這個錯誤,你的file1.php當然不會在全局範圍內定義$ name。

據透露,從該文檔引用:

當包括一個文件,它 包含代碼繼承線的可變範圍 在其上包括 發生。 在調用文件中可用的任何變量將爲 ,該值來自 指向的文件。但是, 包含文件中定義的所有 函數和類都具有全局範圍。

我用php-5.3.3-PL1,巴布亞(CLI)的情況下,測試用例它在任何版本使用的是PHP的錯誤 - 但我懷疑:

[[email protected]:~]> cat inc1.php 
<?php 
$name = 'bleh'; 
include('inc2.php'); 
?> 
[[email protected]:~]> cat inc2.php 
Hi there! <?php echo $name; ?> 
[[email protected]:~]> php inc1.php 
Hi there! bleh 
1

我有時會cuzzled (confuzzled的簡稱),並忘記使用基本文件在線檢查項目。

例如,如果使用包含inc.php的名爲index.php的基礎文件,請確保啓動index.php而不是include文件。

inc.php文件將在瀏覽器中顯示錯誤,因爲它沒有鏈接到index.php變量,而index.php文件包含變量和包含。

0

嘗試使用此代碼

global $name;  
$name = "Jacob";  
include ("file2.php"); 

**和內部文件2。PHP

global $name; 
echo "Hi there! ".$name; 

我認爲,將工作

2

我有同樣的問題,並固定它是這樣的:

$name = "Jacob"; 
include ("file2.php"); 

file2.php

$name = $name; //add this line 
Hi there! <?php echo $name ?> 

我可以」解釋爲什麼它應該像這樣工作。 只是它的工作。

0

我改用一個環境變量。它解決了這個問題。

I.e.

$_ENV["name"] = "Jacob";

和內部file2.php

echo $_ENV["name"];

0

如果你想打印/使用$name變量的話,你必須首先聲明變量file2$name="",那麼你可以很容易地使用它,沒有聲明,你會得到錯誤Undefined Variable