Я работаю с набором переменных, которые проверяю каждый раз при загрузке страницы. Я успешно проверил через $ _REQUEST и $ _SESSION, но у меня возникли проблемы с динамической проверкой переменных, назначенных выше на странице, если они были установлены.
следующий мой код:
$important_field = array('treatmentId','category','state','providerId','sellDoc','insuranceName','grossCharge','discount','allowable','patientPortion','insurancePortion','dateOfService','billFileLocation','eobFileLocation','fromTable');
foreach ($important_field as $key) {
if (!$$key || $$key == "none" || $$key == "" || $$key == NULL) {
if (!$_REQUEST[$key] || $_REQUEST[$key] == "" || $_REQUEST[$key] == NULL) {
if (!$_SESSION[$key]) {
// wow, guess it just wasn't set anywhere...
} else {
$user->sell->$key = $_SESSION[$key];
}
} else {
$user->sell->$key = $_REQUEST[$key]; $_SESSION[$key] = $_REQUEST[$key];
}
} else {
$user->sell->$$key = $$key; $_SESSION[$$key] = $$key;
}
}
Видимо, вычисление ключа $$, похоже, не делает то, что я ищу, так как оно никогда не назначает переменную сеансу ... как я должен оценивать ключ $, чтобы получить текущее установленное значение, скажем, поля $ eobFileLocation, если он уже был установлен в PHP до проверки?
Спасибо
Серебряный тигр
Обновление:
хорошо, у меня есть следующий код, но есть еще одна ошибка с ним. Когда я слежу за своим процессом, через эти переменные устанавливаются на каждой странице и переносятся переменной сеанса, как и ожидалось. Проблема, с которой я до сих пор сталкиваюсь, заключается в том, что, когда я отправляю новую переменную $ _REQUEST, которая ДОЛЖНА изменить переменную сеанса на новое переданное значение, сценарий находит локальную переменную ... откуда он извлекает ключ $ и ключ $$ из этого находит их как локальную переменную?
$important_field = array('treatmentId','category','state','city','providerId','sellDoc','insuranceName','grossCharge','discount','allowable','patientPortion','insurancePortion','dateOfService','billFileLocation','eobFileLocation','fromTable');
foreach ($important_field as $key) {
if (isset($$key) && !empty($$key) && $$key != "none") {
echo "Found local variable for ".$key.", i'll set the session and user to this.<br>\n";
$user->sell->$key = $$key;
$_SESSION[$key] = $$key;
} elseif (isset($_REQUEST[$key]) && !empty($_REQUEST[$key])) {
echo "Found submitted form variable for ".$key.", i'll set the session and user to this.<br>\n";
$user->sell->$key = $_REQUEST[$key];
$_SESSION[$key] = $_REQUEST[$key];
} elseif (isset($_SESSION[$key]) && !empty($_SESSION[$key])) {
echo "Found a session variable ".$key.", i'll set the user to this.<br>\n";
$user->sell->$key = $_SESSION[$key];
} else {
echo "There was no provided data for ".$key."<br>\n";
}
}
Есть идеи, почему, когда я загружаю страницу, она думает, что локальная (как указано выше) установлена? $ key и $$ key читают из $ _SESSION ['blah'] / $ _ REQUEST ['blah'] и думают, что это просто $ blah?