Код, используемый для обработки отправленных форм $ _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));
Тот же код, но с условным значением для $ Filterarray:
// 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;