2011-09-11 72 views
0

就像這個...可以在輸出變量後聲明一個變量嗎? PHP

echo $title; 

$title = 'Jelly'; 

我只問,因爲我有一個在我宣佈$標題頭文件,在我的一些網頁這些網頁使用簡單的$ _GET [」不同部分tab'] ==='blahblahblah';

但這些$ _ GET變量的聲明我已經叫頭文件之後...

+0

取決於你的意思是「可以」嗎?你不會得到一個錯誤,所以在這個意義上你「可以」。但它不會迴應「果凍」...... –

+0

這不是宣告。它是從先前未使用的(因此未聲明的)變量中讀取的,然後將其設置爲一個值。 – tdammers

回答

1

但這些$ _ GET變量的聲明我已經叫頭文件之後...

這是你做錯了什麼。

只有在獲取了所有必要的數據後才能調用您的標題。

您需要適當的網站架構。
把你的代碼轉換成3個部分:

  1. 主網站模板(包括你的頭)
  2. 特定頁面模板
  3. 頁面代碼。

回答這個問題,你永遠不會遇到這樣的問題。
一個典型的腳本可能看起來像

<? 
//include our settings, connect to database etc. 
include dirname($_SERVER['DOCUMENT_ROOT']).'/cfg/settings.php'; 
//getting required data 
$DATA=dbgetarr("SELECT * FROM links"); 
// setting title for using in the main template 
$pagetitle = "Links to friend sites"; 
//etc 
//set page template filename 
$tpl = "links.tpl.php"; 
//and then finally call a template: 
include "main.tpl.php"; 
?> 

其中main.tpl.php是你的主要網站模板,其中包括公用部分,如頁眉,頁腳,菜單等:

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>My site. <?=$pagetitle?></title> 
</head> 
<body> 
<div id="page"> 
<? include $tpl ?> 
</div> 
</body> 
</html> 

links.tpl.php是實際的頁面模板:

<h2><?=$pagetitle?></h2> 
<ul> 
<? foreach($DATA as $row): ?> 
<li><a href="<?=$row['link']?>" target="_blank"><?=$row['name']?></a></li> 
<? endforeach ?> 
<ul> 
+0

我正在使用它們,像這樣... $ _GET ['tab'] ==='inbox'{} $ _GET ['tab'] ==='New Message'{}所以我可以爲一個郵箱併爲郵箱顯示不同的頁面,因此它們必須在頭文件後面聲明,因爲頭文件包含頁面的html內容之前的所有內容。 – carlgcode

+0

你錯了。它們不必在頭文件之後聲明。使用模板。看我的例子。 –

+0

好的謝謝:)我會看看這個 – carlgcode

1

號,如果你輸出$標題,它會輸出什麼,除非$標題已被設置爲別的東西事前,或者除非你有PHP的register_globals設置啓用(php < 5.3.0)和「標題」碰巧是一個請求參數。

如果你問你是否被允許這樣做,那麼絕對。該變量將被改爲'果凍',但該特定值不會如上所述被回顯。

0

在聲明它之前,您不應該使用$ title(PHP將產生有關使用未聲明變量的通知,並且不會輸出任何內容,因爲$ title的值將爲null)。 $ _GET變量由環境(Web服務器)設置,您不應該爲它們賦值 - 您應該只讀取$ _GET變量中收到的值。