2015-12-16 7 views
0

Я еще не писал здесь, поэтому не уверен, что мой почтовый этикет до нуля, но я думал, что попробую удачу здесь.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

+1

Ваша ссылочная переменная из [scope] (http://php.net/manual/en/language.variables.scope.php) – vascowhite

+0

Что такое строка 78? –

+1

Чтобы расширить то, что сказал @vascowhite, проблема заключается в том, что '$ errormsg' является глобальной переменной, поэтому она не видна внутри функции, если у вас нет' global $ errormsg; 'в функции. – Barmar

ответ

-2

Вы используете $$a (который является переменной переменной).

У вас должен быть только один знак доллара, например, $a.

Как правило, вы почти не должны использовать переменные переменные, особенно если они поступают с пользовательского ввода.

+0

OP, похоже, знает, что они используют переменные переменные, поэтому мой -1 в этом случае. – vascowhite

+0

Его ошибка напрямую вызвана использованием переменных переменных, которые он не должен использовать. – Ian

+0

Независимо от того, какая переменная OP создается в этой функции, она не будет доступна вне функции, независимо от того, создается ли она с помощью переменных переменных или нет. –

Смежные вопросы