後,我做的是這樣的:這是我的菜單項:設置一個變量的值,它宣佈
$menu = 'View archives for '.$year;
$year = 2013; //Note that `$year` is set after the above.
而不做任何改變,我怎麼可以做這樣的事情(後設置一個變量的值)?
我正在嘗試這個,失敗了。
$menu = 'View archives for '. &$year;
$year = '2013';
後,我做的是這樣的:這是我的菜單項:設置一個變量的值,它宣佈
$menu = 'View archives for '.$year;
$year = 2013; //Note that `$year` is set after the above.
而不做任何改變,我怎麼可以做這樣的事情(後設置一個變量的值)?
我正在嘗試這個,失敗了。
$menu = 'View archives for '. &$year;
$year = '2013';
最接近你可以做到這一點,是通過使用引用,但這會讓你的代碼變成一個不聖潔,不可維護,容易出錯的雷區。 Read this if you don't know why references are dangerous
不過,如果你願意,你可以自由地嘗試:
$year = null;
$menu = array('View archives for ', &$year);//pass reference to $year
$year = '2013';
echo implode('', $menu);
正如你所看到的,我還是要定義變量之前,我可以傳遞引用過它(du'h,你不能引用即將存在的東西,只有存在的東西)。
一旦你這樣做了,你可以指定任何一個值,你的興趣點可以是$year
,並且$menu
數組中的第二個值會自動跟隨,因爲它只是引用$year
變量。
不過,如果您的問題中的代碼段是您正在嘗試執行的所有操作,爲何不使用sprintf
?一旦你read through the manual of printf
and related functions
View archives for 2010
View archives for 2011
View archives for 2012
View archives for 2013
簡單,:
$menu = 'View archives for %s';
//some code
$year = '2013';
$menu = sprintf($menu, $year);
echo $menu;//sure enough: View archives for 2013
作爲額外的獎勵,你可以在一個循環一遍又一遍的使用:
$format = 'View archives for %s';
for ($i=2010;$i<2014;++$i)
{
printf($format, $i);
echo '<br/>';
}
此打印。
這是不可能的。 $year
的定義必須在任何使用它的定義之前。
程序流的整個概念是,你必須先聲明變量的值,然後才能使用它。還有其他的軟件概念(流程編程),其代碼在其所有輸入都存在之前不會執行 - 但php不是那種語言。
唯一的解決方案是在使用之前初始化$year
的值 - 更改語句的順序。
如果你想增加一年,那麼這應該做你的工作 $ menu ='查看'.date('Y')的檔案; 並且不可能在聲明前使用變量
除非從前一個會話中存儲,否則您無法調用尚未聲明的變量。 – Kermit
這顯然是錯誤的,你不能這樣做! –
你爲什麼要這樣做? –