Проблема была не в коде, не в методе $ _GET, а в разнице серверов (небольшая разница).Я не осознавал, что когда я использовал filter_var () на моем главном сервере, мои массивы превращались в строки.Этот фрагмент кода очистки, вызвавший проблему, отсутствовал на моем тестовом сервере.Согласно документации php :
Значение для фильтрации.Обратите внимание, что скалярные значения преобразуются в строку до того, как они будут отфильтрованы.
Впервые я создал функцию, использующую возможности массива переменной $ _GET, поэтому я не осознавал, чтопри санитарной обработке я выполнял санитарную обработку каждой переменной GET, где в этом новом экземпляре я выполнял санитарную обработку каждого массива GET, а не значения GET.
Код, который я использовал, был:
$get_arr = $var_arr['_GET'];
$get_key = array_keys($get_arr);
$_GET[$get_key[$g_a]] = trim(filter_var($_GET[$get_key[$g_a]], FILTER_SANITIZE_SPECIAL_CHARS));
код, который я изменил на
$get_arr = $var_arr['_GET'];
$get_key = array_keys($get_arr);
$_GET[$get_key[$k]][$i] = trim(filter_var($_GET[$get_key[$k]][$i], FILTER_SANITIZE_SPECIAL_CHARS));
Это всего лишь небольшое различие, но достаточно одного, чтобы я отладил это в течение пары дней.Надеюсь, это поможет кому-то еще на этом пути.