Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вложенные функции PHP 
:(
    Опции темы
kilogram
Дата 31.3.2012, 21:20 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 19.3.2012

Репутация: -1
Всего: 0



Читаю вложенные функции, там такой пример,странно, не работает
Код

<html><body>
<?php
function father($a){
    echo $a, "<br>";
function child($b){
    echo $b+1,"<br>";
    return $b * $b;
}
return $a * $a * $child($a);
}

father(10);
child(30);
?>
</body></html>

PM MAIL   Вверх
kilogram
Дата 31.3.2012, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 19.3.2012

Репутация: -1
Всего: 0



Откуда вывелось 11, если в child попадает вообще 30, должно 31 быть.
PM MAIL   Вверх
ElGuapo
Дата 1.4.2012, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 1.7.2006

Репутация: нет
Всего: 3



1. Тот код, который вы привели, ни 11, ни 31 выдавать не должен, так как в строке 9 лишний знак $ ($child);

2. Если исправить, то выдает 10 11 31. Здесь 11 - это результат вызова child из father в строке 9 с параметром $a, ранвым 10, а 31 - вызова child самой по себе в строке 13.
PM MAIL   Вверх
kilogram
Дата 1.4.2012, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 19.3.2012

Репутация: -1
Всего: 0



То есть передав аргумент 10 функции father, объявив нвутри этой функции father функцию child, тоже с одним параметром, я получается ему передаю то же значение 10, которое увеличивается на 1 после этой строки    echo $b+1,"<br>"; и стает 11?
Ещё, попробовал убрать вот эту строку   return  $b * $b;  и код со всем не изменился, а выдает те же значения что и с этой строкой, что и без неё? Почему?

Насчет этой строки:
return $a * $a * child($a);
здесь получается 10*10*30 что ли? Как считается?
PM MAIL   Вверх
ElGuapo
Дата 1.4.2012, 20:08 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 1.7.2006

Репутация: нет
Всего: 3



Позвольте дать вам один совет. На том уровне знаний PHP, которым вы обладаете, вам вложенные функции не нужны. К тому же, в PHP они реализованы довольно коряво, например, до вызова parent вызвать child вообще не получится. Образно говоря, вы не разобрались в элементарной механике, а просите помочь построить луноход. Такое обсуждение грозит затянуться надолго.

Вам нужно вначале понять, какое значение возвращает функция, как получить доступ к этому значению. Разобраться в том, как можно изменить значение переменной. Например, оператор echo никак изменить его не может; для присвоения нового значения существует оператор присвоения. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0403 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.