Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&引用;“双”字;PHP中的求值_Php_Variables_Evaluation - Fatal编程技术网

&引用;“双”字;PHP中的求值

&引用;“双”字;PHP中的求值,php,variables,evaluation,Php,Variables,Evaluation,大家早上好 我的MySQL查询返回一个PHP变量名,我希望在输出时对其进行“双重”计算。我最好是以身作则 在静态资源页面上,我有: $page1 = "test1.php"; $page2 = "test2.php"; 我的MySQL表tbl_pages在fld_pagename下包含两个条目:$page1和$page2。这样,我想我只定义了$page1和$page2一次 现在,在我正在处理的页面上,有一个查询返回页面名称: $query = mysql_query("SELECT fld_p

大家早上好

我的MySQL查询返回一个PHP变量名,我希望在输出时对其进行“双重”计算。我最好是以身作则

在静态资源页面上,我有:

$page1 = "test1.php";
$page2 = "test2.php";
我的MySQL表tbl_pages在fld_pagename下包含两个条目:$page1和$page2。这样,我想我只定义了$page1和$page2一次

现在,在我正在处理的页面上,有一个查询返回页面名称:

$query = mysql_query("SELECT fld_pagename FROM tbl_pages WHERE fld_show = 1 ORDER BY fld_ref");
while($row = mysql_fetch_array($query)){
    $nameofpage = $row['fld_pagename'];
    echo "$nameofpage",'<br />';
}
$query=mysql\u query(“从tbl\u页面中选择fld\u页面名,其中fld\u show=1 ORDER BY fld\u ref”);
while($row=mysql\u fetch\u array($query)){
$nameofpage=$row['fld_pagename'];
回显“$nameofpage”,“
”; }
但是,变量周围的双引号仅将变量计算到一个级别。其产出是:

$page1<br />$page2<br />
$page1
$page2
但我希望在输出之前对这些变量进行评估:

test1.php<br />test2.php<br />
test1.php
test2.php

任何想法都非常感谢

如果只存储变量名而不存储$,则可以使用PHP的变量特性变量

   echo $$nameofpage,'<br />';
echo$$nameofpage,
可以从存储的输入中删除$

 $nameofpage=substr( $nameofpage, 1 );
 echo $$nameofpage,'<br />';
$nameofpage=substr($nameofpage,1);
echo$$nameofpage,“
”;
如果您在对所引用的页面进行评估之后,那么这将起作用:

$query = mysql_query("SELECT fld_pagename FROM tbl_pages WHERE fld_show = 1 ORDER BY fld_ref");
while($row = mysql_fetch_array($query)){
    $nameofpage = $row['fld_pagename'];
    include($nameofpage);
    echo '<br />';
}
$query=mysql\u query(“从tbl\u页面中选择fld\u页面名,其中fld\u show=1 ORDER BY fld\u ref”);
while($row=mysql\u fetch\u array($query)){
$nameofpage=$row['fld_pagename'];
包括($nameofpage);
回声“
”; }
如果我理解正确,您可以使用此PHP功能(示例):

或者,为了使其与您的系统兼容

$nameofpage=substr($nameofpage,1); // remove dollar
echo $$nameofpage.'<br/>';
$nameofpage=substr($nameofpage,1);//除去美元
echo$$nameofpage.“
”;
看来您的数据库设计是错误的。
在数据库中存储PHP变量名没有单一原因。

存储页面名称本身,您就会没事了

echo$nameofpage.
?也许他在尝试创建某种模板系统。。。这种笼统的论点根本没有建设性。@Christian我有足够的经验自己来判断。嗯,我有足够的经验来判断那些在最佳实践与否之间划清界限的网站。我在最初的帖子中没有说,因为我不想说得太长:这是一个基于MySQL数据库的简单模板网站。我在一张参考资料表中列出了数据库中的某些变量。还有其他方法可以做到这一点。我选择这种方式是因为它适用于这个网站。没有“正确的方式”这样的东西,但可能有“更好的方式”。谢谢,但这实际上带来了整个页面,而不是名称。就是这样-谢谢。我尝试了变量,但忘记删除前面的$Welcome,总是很乐意帮助。谢谢Shakti。就像克里斯蒂安的评论一样
$nameofpage=substr($nameofpage,1); // remove dollar
echo $$nameofpage.'<br/>';