1

我想声明一个包含变量名的字符串,然后让 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 输出。这有意义吗?我会以错误的方式解决这个问题吗?

4

2 回答 2

2

建议您不要使用 eval。过去,我只将 eval 用于必须构建动态布尔逻辑的情况。如果您必须使用它,那么您可以按照以下说明进行操作。

$string = '$val = "FooBar"; $out = "This is my string $val";'; //when a variable is placed inside single quotes it will not expand.
eval($string);
echo $out;

再次不建议使用 eval。这纯粹是为了教育目的。

于 2013-07-05T02:25:22.700 回答
2

就变量的声明而言,没有。但是如果你想坚持这个设计,用函数是可能的。

$str2="the new value is ".newValue();
function newValue()
{
  return 'something new';
}

echo $str2;
于 2013-07-05T02:43:40.867 回答