Почему php скрипт игнорирует функцию?
Вот он, ваш$arr[2]
А функция внутри себя что-то делает, но результат не возвращает же. Давайте я угадаю, первым языком у вас был js, а теперь вы внезапно обнаруживаете, что замыкания есть не во всех языках, и даже если они есть, то работают не совсем так.Замыкания в php есть, но они не применяются к каждой функции автоматически, как в js, и если вам они действительно нужны, придется делать это самостоятельно, как-то так: https://ideone.com/HvsrC2
И вообще, в таких простых случаях проще передать массив как параметр: https://ideone.com/JMIntQ
А еще лучше так: https://ideone.com/aWaK70
В таком случае более явно видно, что функция изменит массив $arr.
Вы к внешней переменной $arr обращаетесь.
Внутри функции $arr = $b1;
В конце функции необходимо вернуть значение 
 return $arr[$n];
}
а при печати:
$geomPr = geomPr(2, 2);
echo $geomPr;
Если Вы не возвращаете значение  return $arr[$n]; внутри функции, то система не знает, что печатать или брать на вычисление.