Я хотел бы объявить строку, содержащую имя переменной в ней, а затем php сможет идентифицировать эту переменную из строки, как javascript eval. Примеры:php extract имя переменной из строки, вроде 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 был назначен. Есть ли в любом случае для php, чтобы сделать это, чтобы иметь возможность получить имя переменной из строки, а затем получить значение этой переменной? Думаю, это похоже на javascript eval. Спасибо за прочтение!
Использование: Я строю html-блоки внутри цикла foreach. он петли через массив, поэтому информация внутри цикла является ключом и значением каждого элемента массива. Я пишу метод для объекта формы, который позволяет пользователю указывать элементы входного блока. некоторые из этих элементов хотели бы получить доступ к ключу, а некоторые хотели бы получить доступ к значению. так, например
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