Попробуйте это:
function sessionOrBlank() {
$args = func_get_args();
if (count($args) < 0) {
return '';
}
$argCtr = 0;
$argPtr =& $_SESSION;
do {
if (!isset($argPtr[$args[$argCtr]])) {
return '';
}
$argPtr =& $argPtr[$args[$argCtr++]];
} while($argCtr < count($args));
return $argPtr;
}
Тогда используйте как:
<input value="<?php echo sessionOrBlank(CONSTANT,'fields','first_name'); ?>">
Общее использование:
Передайте аргументы этой функции в том порядке, в котором вы хотите искать в массиве. Например, если вы хотите найти $_SESSION['foo']['bar']
, используйте sessionOrBlank('foo','bar');
.
Редактировать: Вы упомянули настройки
Не совсем уверен, что вы имели в виду, но эта функция ведет себя подобно предыдущей, за исключением того, что она будет обрабатывать последний переданный ей аргумент как значение, которое должно быть установлено. Он также вернет установленное значение, так что результат использования этой функции будет таким же, как и результат выражения присваивания (обычно). Он не должен допускать перезапись всей переменной сеанса, однако он будет перезаписывать любые ключи, которые в настоящее время не являются массивами, если они существуют, или будет дополнять существующие массивы, если они этого не делают. Наслаждайтесь.
function setSession() {
$args = func_get_args();
if (count($args) < 1) {
return false; // don't overwrite whole session
}
$argCtr = 0;
$argPtr =& $_SESSION;
do {
if (!isset($argPtr[$args[$argCtr]]) || !is_array($argPtr[$args[$argCtr]])) {
$argPtr[$args[$argCtr]] = array();
}
$argPtr =& $argPtr[$args[$argCtr++]];
} while($argCtr < count($args) - 1);
$argPtr = $args[$argCtr];
return $argPtr;
}