多维$ _SESSION数组为NULL

问题描述 投票:0回答:1

正在运行PHP 7.x

我以这种方式使用一些$ _SESSION数组:

$_SESSION['form_data']['form_field'] = $data;

每个“ form_data”有多个“ form_field”。

仅在更改表单数据时设置此$ _SESSION。如何将$ _SESSION设置为NULL(如果为空),而不必分别遍历每一个?]

我已经尝试过$ _SESSION ['form_data'] = NULL;但是,这似乎不起作用。如果$ _SESSION ['form_data'] ['form_field']在页面上没有特别设置,则会引发警告。

我知道我可以毫无问题地隐藏警告,但我想找出正确的方法。还是隐藏警告的正确方法?

谢谢,瑞克

++++++++++++++++++++++++++++++++编辑以添加其他代码+++++++++++++++++++++++++++++++++

//Displays original data from database unless new data was submitted in form
function display_form_value($orig_data = NULL, $new_data = NULL) {
    if(trim($new_data) != NULL) {
        return $new_data;
    } else {
        return $orig_data;
    }
 }

在我的表单处理页面上:

$defineTopLink = $_POST['defineTopLinkFollow_1']; //Add'l security removed for clarity
if($defineTopLink != $define['TopLink']) { 
    //$define['TopLink'] is a value pulled from the database
    $_SESSION['form_data']['defineTopLink'] = $defineTopLink; }
    else { 
        $_SESSION['form_data']['defineTopLink'] = "";
    }

在表单页面上

<input 
    id="defineTopLink_1" 
    name="defineTopLink_1" 
    type="text" 
    value="<?= display_form_value($define['TopLink'], $_SESSION['form_data']['defineTopLink']) ?>" />
php php-7
1个回答
0
投票

隐藏警告或错误不是一个好习惯。您可能需要做的可能是在实际访问它之前使用if(isset($_SESSION['form_data']['form_field']))

即使您对字段的描述不十分清楚,如果您执行以下操作,也会得到想要的结果

function getFormField($formData, $formField){
  if(isset($_SESSION[$formData][$formField]) {
    return $_SESSION[$formData][$formField];
  }
}

...
//somewhere else in your code

$formData = 'some_form_data';
$formField = 'some_field_name'

$formFieldValue = getFormField(formData,formField)
© www.soinside.com 2019 - 2024. All rights reserved.