【发布时间】:2011-08-31 08:17:17
【问题描述】:
我正在使用一组变量,每次加载页面时都会检查这些变量。我已经成功地检查了 $_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;
}
}
显然评估 $$key 似乎没有做我正在寻找的事情,因为它从不将变量分配给会话......我应该如何评估 $key 以获得当前设置的值,比如字段 $ eobFileLocation 如果在检查之前已经在 PHP 中设置?
谢谢,
银虎
更新:
好的,我有以下代码,但仍有一个错误。当我通过在每个页面上设置这些变量中的一些变量来跟踪我的过程时,并按预期由会话变量进行传递。我仍然遇到的问题是,当我提交一个应该将会话变量更改为新提交的值的新 $_REQUEST 变量时,脚本正在寻找一个局部变量......它在哪里拉 $key 和 $$key是否将这些作为局部变量?
$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?
【问题讨论】:
-
ok ... 找到了问题——尽管我认为我已经解决了它。显然我恢复到旧代码并没有抓住它..这是修复..不要在任何地方使用 $$ ,只是你想要变量的值..即 user->sell->$key = $$key 。 ..不是用户->销售->$$key = $$key.
-
也许您可以先简要介绍一下这段代码应该做什么?您正在检查一个变量是否在本地设置,否则是否设置在
$_REQUEST中,否则如果它设置在$_SESSION中,那么为您的$user对象使用第一个匹配值? -
顺便说一句,这似乎是非常糟糕的数据卫生和混乱的数据流。如果你不知道值在哪里,并且如果你有很多“假”的情况,包括
"none",你应该首先处理内部一致性和数据管理。 -
我正在努力确保这主要在 $_SESSION 变量中可用,但为了以防万一,也将它推到 $user 中。如上面更新的帖子中所示,我还更改了我的 if 语句......但显然它仍然需要工作..
-
deceze - 这是为与 PHPBB3 交互而构建的自定义页面,$user->sell 是我创建的一组用于跟踪销售数据的变量。我正在使用 SESSION 跨页面保留数据,因为我不确定 $user 何时被清除,尽管它是基于集成在每个页面上定义的。
标签: php variables evaluation