| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Вложенные функции PHP |
| Автор: kilogram 31.3.2012, 21:20 | ||
Читаю вложенные функции, там такой пример,странно, не работает
|
| Автор: kilogram 31.3.2012, 22:22 |
| Откуда вывелось 11, если в child попадает вообще 30, должно 31 быть. |
| Автор: ElGuapo 1.4.2012, 12:12 |
| 1. Тот код, который вы привели, ни 11, ни 31 выдавать не должен, так как в строке 9 лишний знак $ ($child); 2. Если исправить, то выдает 10 11 31. Здесь 11 - это результат вызова child из father в строке 9 с параметром $a, ранвым 10, а 31 - вызова child самой по себе в строке 13. |
| Автор: kilogram 1.4.2012, 15:26 |
| То есть передав аргумент 10 функции father, объявив нвутри этой функции father функцию child, тоже с одним параметром, я получается ему передаю то же значение 10, которое увеличивается на 1 после этой строки echo $b+1,"<br>"; и стает 11? Ещё, попробовал убрать вот эту строку return $b * $b; и код со всем не изменился, а выдает те же значения что и с этой строкой, что и без неё? Почему? Насчет этой строки: return $a * $a * child($a); здесь получается 10*10*30 что ли? Как считается? |
| Автор: ElGuapo 1.4.2012, 20:08 |
| Позвольте дать вам один совет. На том уровне знаний PHP, которым вы обладаете, вам вложенные функции не нужны. К тому же, в PHP они реализованы довольно коряво, например, до вызова parent вызвать child вообще не получится. Образно говоря, вы не разобрались в элементарной механике, а просите помочь построить луноход. Такое обсуждение грозит затянуться надолго. Вам нужно вначале понять, какое значение возвращает функция, как получить доступ к этому значению. Разобраться в том, как можно изменить значение переменной. Например, оператор echo никак изменить его не может; для присвоения нового значения существует оператор присвоения. |