我喜欢这样:这些是我的菜单项:
$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';
最接近您可以做到这一点的方法是使用引用,但这会使您的代码成为一个邪恶的、不可维护的、容易出错的雷区。如果您不知道为什么引用是危险的,请阅读本文
不过,如果您愿意,您可以自由尝试:
$year = null;
$menu = array('View archives for ', &$year);//pass reference to $year
$year = '2013';
echo implode('', $menu);
如您所见,在传递引用之前我仍然必须定义变量(du'h,您不能引用即将存在的内容,只能引用存在的内容)。
完成此操作后,您可以分配任何让您心血来潮的值$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
很简单,一旦你通读了printf
相关功能的手册。
这是不可能的。的定义$year
必须在任何使用它的定义之前。
程序流的整个概念是必须先声明变量的值,然后才能使用它。还有其他软件概念(流式编程),其中代码在其所有输入存在之前不会执行 - 但 php 不是那种语言。
$year
唯一的解决方案是在使用它之前初始化它的值——改变语句的顺序。
如果您想添加年份,那么这应该可以完成您的工作 $menu = 'View archives for '.date('Y'); 并且在声明之前不能使用变量