Почему функция array_pop не всегда работает коректно в PHP?

тогда вам смогут ответить
$id = array_pop($id); - вернет последний элемент массива, $id в то же время массив который стал короче на 1 элемент. А вы чего пытаетесь добиться?
было бы логично использовать другую переменную $last_id = array_pop($id); тогда в $last_id точно будет последний элемент массива, а в $id массив без последнего элемента.