我喜欢这样:这些是我的菜单项目:
$menu = 'View archives for '.$year;
$year = 2013; //Note that `$year` is set after the above.
如果不做任何更改,我该怎样做(稍后设置变量值)?
我正在尝试这个,但失败了。
$menu = 'View archives for '. &$year;
$year = '2013';
答案 0 :(得分:1)
最接近你可以做到这一点的方法是使用引用,但这将使你的代码成为一个不圣洁,不可维护,容易出错的雷区。 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);
正如你所看到的,我仍然必须先定义变量,然后我才能传递一个引用(呃,你不能引用即将存在的内容,只有存在的内容)。
完成后,您可以将任意值突出显示$year
,并自动将$menu
数组中的第二个值跟随,因为它只引用$year
变量
尽管如此,如果问题中的代码段是您尝试做的,为什么不使用sprintf
?
$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/>';
}
打印:
View archives for 2010
View archives for 2011
View archives for 2012
View archives for 2013
很容易,一旦你read through the manual of printf
and related functions。
答案 1 :(得分:0)
这是不可能的。 $year
的定义必须先于使用它的任何内容的定义。
答案 2 :(得分:0)
程序流程的整个概念是必须先声明变量的值才能使用它。还有其他软件概念(流程编程),其中代码在所有输入都存在之前不会执行 - 但是php不是那种语言。
唯一的解决方案是在使用它之前初始化$year
的值 - 更改语句的顺序。
答案 3 :(得分:0)
如果你想增加年份,那么这应该是你的工作 $ menu ='查看'.date('Y')的档案; 并且在声明之前不可能使用变量