Я еще не писал здесь, поэтому не уверен, что мой почтовый этикет до нуля, но я думал, что попробую удачу здесь.PHP - Использование переменной в качестве имени другой переменной внутри функции
Итак, у меня есть PHP функцию здесь, который я использую для создания переменных без него бросали ошибки, если нет значения, установленного для него
function getIfSet(&$value, $default = "") {
return isset($value) ? $value : $default;
}
один пример, в котором я использую это было бы:
$errormsg = getIfSet($_SESSION["LoginError"]);
if ($errormsg != "") {
unset($_SESSION["LoginError"]);
}
Однако у меня есть несколько страниц, где я использую это несколько раз, поэтому я попытался создать для этого функцию. Это не работает (я новичок в PHP, однако), но я заметил, что следующий код работал
$a = "errormsg";
$b = "LoginError";
$$a = getIfSet($_SESSION[$b]);
if ($$a != "") {
unset($_SESSION[$b]);
}
Так по этой логике, я предположил, следующая функция будет работать слишком
function get($a, $b) {
$$a = getIfSet($_SESSION[$b]);
if ($$a != "") {
unset($_SESSION[$b]);
}
}
get("errormsg", "LoginError");
Однако Это не. Вместо этого он говорит Примечание: Undefined переменной: ErrorMsg на линии 78, но я не совсем понимаю, почему это не будет работать, видя, как это хорошо работает, когда я использую переменные $ в и $ б просто не в вместо этого. Спасибо заранее и извините, если у меня нет очень эффективного кодирования, я новичок: D
Ваша ссылочная переменная из [scope] (http://php.net/manual/en/language.variables.scope.php) – vascowhite
Что такое строка 78? –
Чтобы расширить то, что сказал @vascowhite, проблема заключается в том, что '$ errormsg' является глобальной переменной, поэтому она не видна внутри функции, если у вас нет' global $ errormsg; 'в функции. – Barmar