用于处理表单 $_POST 提交的代码在大多数表单上运行良好,但在一组新表单上突然中断。我看不出表格本身有任何区别,因为它纯粹基于发布的值,我已经修复了它,但我很好奇为什么会突然出现问题。
在某些情况下,不处理特定的 post 值,并且在不需要时,它们作为逗号分隔的列表在 $RemoveFields 中,该列表被转换为数组,并且在一组表单上,它不会不管 $RemoveFields 是否有任何值,但在另一组它为空时会崩溃。
通过添加条件,我能够使其工作,但谁能告诉我原始代码的问题是什么?旧的和新的都在下面。第一种仅适用于某些形式,而第二种似乎适用于所有形式。
原代码:
// Remove unneeded fields specified in $RemoveFields variable
if (isset($RemoveFields) && !is_array($RemoveFields)) $RemoveFields = array($RemoveFields);
$filteredarray = array_diff_key($_POST, array_flip($RemoveFields));
相同的代码,但带有 $filteredarray 值的条件:
// Remove unneeded fields specified in $RemoveFields variable
if (isset($RemoveFields) && !is_array($RemoveFields)) $RemoveFields = array($RemoveFields);
$filteredarray = (isset($RemoveFields)) ? array_diff_key($_POST, array_flip($RemoveFields)) : $_POST;