我想声明一个包含变量名的字符串,然后让PHP能够从字符串中识别该变量,就像一个javascript eval。示例:php从字符串中提取变量名,有点像javascript eval
此代码有效,因为$ value的值是字符串中的值,而不是“$ value”。
$value="some value";
$str="the value is $value";
echo $str;
//the value is some value
,但我想这样的功能:
$str2="the new value is $newValue";
$newValue="something new";
echo $str2;
//the new value is something new
当然,这并不在PHP中工作,因为$ str2的分配时,$ NEWVALUE并不存在。有没有办法让PHP做到这一点,能够从字符串获取变量名,然后获取该变量的值?这有点像我猜的javascript eval。谢谢阅读!
用法:我正在构建一个foreach循环内的html块。它通过一个数组循环,因此循环内部的信息是每个数组元素的键和值。我正在编写一个表单对象的方法,可以让用户指定输入块的元素。其中一些元素喜欢访问密钥,而有些则喜欢访问该值。因此,例如
foreach($cars as $key=>$car)
{
echo "<input id='text$key' type='text' value='".$car["model"]."'><br>
\n<input value='choice$key' type='button' value='".$car["make"]."'>
<br><br>\n\n";
}
会产生类似
<input id="text0" type="text" value="Malibu"><br>
<input id="choice0" type="button" value="Chevy"><br><br>
<input id="text1" type="text" value="Escort"><br>
<input id="choice1" type="button" value="Ford"><br><br>
我想这是在飞行中产生的,所以说我有一些所谓的makeCarForm方法,它接受一个字符串作为输入,因此可以说,
function makeCarForm($formString)
{
foreach($cars as $key=>$car)
{
echo $formString;
}
}
,然后我的字符串
$theFormString="<input id='text$key' type='text' value='".$car["model"]."'><br>
\n<input value='choice$key' type='button' value='".$car["make"]."'>
<br><br>\n\n";
,所以我可以调用诸如
makeCarForm($theFormString);
功能,它会产生与上述相同的HTML输出。这有意义吗?我是否以这种错误的方式去做?
是不是一个字符串重组更容易? ['sprintf()'](http://php.net/sprintf) – BlitZ
什么是用例?不,如果你有一个插值表达式的字符串结果,你不能得到以前的状态或变量名称。改为使用printf样式的占位符方案。或子字符串搜索,或任何你问。 – mario
我已经添加了一个用例。 – chiliNUT