正在运行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']) ?>" />
隐藏警告或错误不是一个好习惯。您可能需要做的可能是在实际访问它之前使用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)