Php 将$前置到字符串以使其成为变量

Php 将$前置到字符串以使其成为变量,php,Php,如何将$符号前置到字符串,使其成为变量 Eg: $consumer = array() $industrial = array()//These 2 are in a separate include file. $var = $_GET['val'] // value here is 'consumer' function ('$'.$var,$bar) //I'm trying to make consumer -> $consumer 为什么不只是: if ($_GET['v

如何将$符号前置到字符串,使其成为变量

Eg: 
$consumer = array()
$industrial = array()//These 2 are in a separate include file.

$var = $_GET['val'] // value here is 'consumer'

function ('$'.$var,$bar) //I'm trying to make consumer -> $consumer
为什么不只是:

if ($_GET['val'] == 'customer') {
    function($bar);
}

这不是达到该值的最佳方法,但PHP支持:$$var:

$$var
这就是你想要的。第二个$表示变量的值应该用作变量的名称

有更多的细节

$consumer = array()
$industrial = array()//These 2 are in a separate include file.

$var = $_GET['val'] // value here is 'consumer'

function ($$var,$bar) //I'm trying to make consumer -> $consumer
不要忘记检查$\u GET['val']的值是否是程序员期望的值,而不是其他值。

只需执行以下操作:

$var='myString'

${$var}='output'


echo$myString

好的,这是你绝对应该包括的白名单

$whitelist = array('customer', 'consumer');
$fallback = $whitelist[0];
$var = in_array($whitelist, $_GET['val'] ? $_GET['val'] : $fallback;

您丢失了每个分号。请确保您在此应用了一个白名单,否则用户可以自由访问您的内部PHP变量,从而导致可能的安全漏洞。请不要开始讨论分号。虽然有办法做到这一点,但这通常不是最好的主意。如果你分享更多关于你想做什么的内容,你可能会得到更好的建议$_获取['val']:$fallback;