То, что элементы без ключей считаются одинаковыми - собственно, прямое следствие поставленной задачи. И по-другому их интерпретировать считаю некорректным.
Они и должны. Ведь идёт удаление дублей. Кроме того, ничего не сказано, что ключи не должны быть не по порядку. А если это так нужно - применить array_values() к результату.
А если ещё больше, то - DOUBLE (т.к. DECIMAL вместит максимум 65 знаков для целой части, а DOUBLE - значения до ~1.78E308 - вот только с количеством значащих цифр будет проблема). Но, если честно, мне сложно представить, для чего могут понадобиться значения до ~ 10308(для сравнения, число атомов в известной части Вселенной сравнимо с 1080)
- но полученный способ хоть и будет решать задачу удаления пустых параметров, но перейти по такому адресу не получится. Нужно добавлять $_SERVER['HTTP_HOST'] к примеру, чтобы получить корректный URL.
Зачем? Код выше вполне корректно фильтрует параметры, никакой модификации не требуется. Проверьте, что получается в итоге - и можно ли по такому URL перейти.
Это потому, что QUERY_STRING не является тем, что можно использовать для parse_str в его первоначальном виде. Но в PHP есть специальные функции. Например,