PHP转换" $"变量的字符变换新变量

时间:2018-03-19 20:41:34

标签: php variables

我是php的新手,结果是我正在尝试拥有角色" $"被视为由字符串组合定义的变量的变量指示符。

我正在尝试生成一个动态变量,它将url传递的变量和一个新变量集成在一起。在下面的示例中,url传递的变量($ url_var)将是数字(1,2,3等)。这个变量已在php中用$ _REQUEST定义。然后我想将这个变量与字符串组合起来定义一个动态的新变量($ title),它取决于$ url_var的值。有多个"标题"相关的(例如,$ pub1_title,$ pub2_title),与$ url_var直接相关。也就是说,$ publ_title在$ url_var = 1时是相关的,依此类推。所以我可以简单地为每个案例定义$ title(例如,当$ url_var = 1时$ title = $ pub1_title),但我想要一个动态的代码行。要做到这一点,我需要有角色" $"被解释为变量指示符。很简单,我该怎么做?而且,有更有效的方法吗?

<? 
// Define Pub Variables
$url_var = $_REQUEST['url_var'];
$pub1_title = "pub1_title";
$pub2_title = "pub2_title";

// Make Title Variable

$title = "$" . "pub" . $url_var . "_title";  // Does not work (returns "$pub1_title")
//$title = $pub1_title;                      // This works, but is static.
echo $title;

?>

1 个答案:

答案 0 :(得分:3)

你问的是variable variables

你可以做你想做的事,你的语法有点偏。

$title = ${"pub" . $url_var . "_title"};

说实话,我并不真的建议使用它们。我一般发现它们比有用更令人困惑,而更喜欢使用数组。例如:

//array instead of separate variables
$pub_titles = [
    1 => "pub1_title",
    2 => "pub2_title"
];

// Refer to the array key here instead of using a dynamic variable
$title = $pub_titles[$url_var];
echo $title;