переменная, объявленная в функции как global не изменяется в теле функции, хотя новое значение ей присваивается?
да. все дело в том, что не надо использовать глобальные переменные.
я может быть не корректно выразился. У меня вот так: $a=1; function foo(){ global $a; $a++; } foo(); echo $a; // 1 А судя по документации должно быть 2.
и зачем там строчка global a?
Верно ли я понимаю, что должно быть "2"?
https://www.php.net/language.variables.scope тут написано что должно работать. видать у тебя по-другому
а где вызов функции
ой, конечно. Поправил
В общем, код вот: http://sandbox.onlinephpfunctions.com/code/c14ad15cd871cd43fd1f903e0c7d8dbc618f86e3 Пояснения: при вызове функции make_line_to() внутри нее должны меняться значения глобальных переменных $x и $y на новые значения. Соответствующее присвоение имеется в строчках 61 и 62. Но по итогу в строке 120 стоит echo, который выводит те значения $x и $y, которые были и до вызова функции (сам вызов в 119 строке)
геймдев какой-то... зачем пхп то вообще? заверни все в класс и не мучайся
класс - не ооп. а просто избавление от глобала и собирание связанного функционала в одном месте.
перефразирую: я не очень хорошо владею классами
если ты можешь писать такой код - то разобраться в классах для тебя пол часа чтения доки. и сделать это надо. а то код выглядит как... ну начало нулевых как максимум. из сей.
Честно говоря во всей этой неразберихе сложно с телефона смотреть, пройдись дебагом по ним, посмотри, почему они не присваиваются
хм... дебагом :))) У меня вся техника дебага - это расставить echo где надо (и не надо) :)
Ну, тогда тут мало чем могу помочь
Обсуждают сегодня