我想聲明一個包含變量名的字符串,然後讓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