回显变量中的变量

时间:2013-12-16 18:20:23

标签: php

我正在从文件加载变量,然后我需要根据另一个页面变量回显该变量。这是代码

<?php
ob_start();
include 'states-desc/before_after_table_description.php';
ob_end_clean();
echo $alabama_after;
?>

现在,我需要用 $ state_name_after 替换echo $ alabama_after

好的,所以当已经加载到首页的变量是 $ state_name 时。那个州名是佛罗里达州。当我放弃 $ state_name_before ;我需要变量变为$ florida_before并回显包含文件变量$ florida_before;的内容。

如果有什么方法可以在变量中删除变量名吗?

2 个答案:

答案 0 :(得分:2)

您是否正在寻找类似eval()的内容?

答案 1 :(得分:2)

可能你需要“变量变量”。

我使用PHP 5.3.26测试了以下内容。

档案i.php:

<?php
$alabama_after = "montgomery";

文件p.php:

<?php

ob_start();
include "i.php";
ob_clean();

$state_name = "alabama";

$state_name_after = "{$state_name}_after";

// the following two echo the same thing:
echo $alabama_after . "\n";
echo $$state_name_after . "\n";

输出:

$ php p.php
montgomery
montgomery

另见http://www.php.net/manual/en/language.variables.variable.php


但是,我想知道为什么在使用关联数组时使用此方法。例如,i.php看起来像这样:

<?php
$after_data = array(
  "alabama" => "montgomery"
);

p.php看起来像这样:

<?php

ob_start();
include "i.php";
ob_clean();

$state_name = "alabama";

$state_name_after = $after_data[$state_name];

echo $state_name_after . "\n";