в настоящее время я использую эту функцию php:
function if_exist(&$argument, $default = '') { if (isset ($argument)) { echo $argument; } else { echo $default; } }
Я хочу, чтобы эта функция отключила переменные $ argument (переданные по ссылке) и $ default сразу после повторения их значения, как я могу это сделать? Заранее спасибо.
В соответствии с руководством для отмены :
Если переменная, пропущенная по ссылке, отключена () внутри функции, уничтожается только локальная переменная. Переменная в вызывающей среде будет сохранять то же значение, что и до вызова unset ().
Я предполагаю, что это проблема, с которой вы сталкиваетесь. Итак, мое предложение состоит в том, чтобы просто задать $argument
для NULL
. Который, согласно документам NULL , «удалит переменную и отключит ее значение».
Например: $argument = NULL;
$default
передается по значению, поэтому его нельзя отменить (кроме локальной области).
Как вы, несомненно, обнаружили, unset()
просто отключает ссылку на $argument
. Вы можете (сортировать) unset $argument
следующим образом:
$argument = null;
единственный способ сделать это с помощью функции – использовать глобальные переменные.
//To unset() a global variable inside of a function, // then use the $GLOBALS array to do so: <?php function foo() { unset($GLOBALS['bar']); } $bar = "something"; foo(); ?>
не//To unset() a global variable inside of a function, // then use the $GLOBALS array to do so: <?php function foo() { unset($GLOBALS['bar']); } $bar = "something"; foo(); ?>