我試圖找到這一個解決方案: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
需要幫助,請://
我試圖找到這一個解決方案: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
需要幫助,請://
確保您的網址file1.php
結束,而不是file2.php
或包含file2.php
其他一些文件。此外,請嘗試將這兩個文件都精確地降至您在此處發佈的內容(在file1.php
的開頭加上<?php
),以排除周圍的代碼。
您的代碼正常工作。
如果你得到這個錯誤,你的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
我有時會cuzzled (confuzzled的簡稱),並忘記使用基本文件在線檢查項目。
例如,如果使用包含inc.php的名爲index.php的基礎文件,請確保啓動index.php而不是include文件。
inc.php文件將在瀏覽器中顯示錯誤,因爲它沒有鏈接到index.php變量,而index.php文件包含變量和包含。
嘗試使用此代碼
global $name;
$name = "Jacob";
include ("file2.php");
**和內部文件2。PHP
global $name;
echo "Hi there! ".$name;
我認爲,將工作
我有同樣的問題,並固定它是這樣的:
$name = "Jacob";
include ("file2.php");
file2.php
$name = $name; //add this line
Hi there! <?php echo $name ?>
我可以」解釋爲什麼它應該像這樣工作。 只是它的工作。
我改用一個環境變量。它解決了這個問題。
I.e.
$_ENV["name"] = "Jacob";
和內部file2.php
echo $_ENV["name"];
如果你想打印/使用$name
變量的話,你必須首先聲明變量file2
像$name=""
,那麼你可以很容易地使用它,沒有聲明,你會得到錯誤Undefined Variable
。
剛剛嘗試過,它的工作方式應該如此。你可以嘗試使$ name成爲一個全局變量,但這會帶來其他問題。 – Roadmaster 2010-12-04 23:30:43
這工作正常;的確,這是多少個PHP模板系統的工作。 – 2010-12-05 00:23:15