X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Переменная в функции доступна в основной программе, Как сделать?
sc2r2bey
sc2r2bey
Topic Starter сообщение 16.2.2010, 11:08; Ответить: sc2r2bey
Сообщение #1


как сделать чтоб значение переменной в функции было доступно для работы в основной программе


--------------------
Заметки о разработке и не только
программирую web и для we
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
yury_mw
yury_mw
сообщение 16.2.2010, 14:32; Ответить: yury_mw
Сообщение #2


Вам, наверное, сюда: Глобальные переменные в PHP
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 16.2.2010, 21:49; Ответить: ZiTosS
Сообщение #3


sc2r2bey, а что вам мешает вернуть значение из функции и занести её в переменную вне функции. И работайте себе с ней в основной программе.
Как говорил наш преподаватель по Системному Программированию - глобальные переменные - это ЗЛО. Знаешь как нарушается читаемость твоей программы? Просто ужасно, особенно если подобных переменных много.

Так что, лучше структурируйте правильно программу. Не надо никаких глобальных переменных внутри функций.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
sc2r2bey
sc2r2bey
Topic Starter сообщение 18.2.2010, 16:11; Ответить: sc2r2bey
Сообщение #4


как это в коде выглядит?


--------------------
Заметки о разработке и не только
программирую web и для we
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 18.2.2010, 18:14; Ответить: ZiTosS
Сообщение #5


sc2r2bey, что именно? Если ты про возвращаемые значения, то так:
[php]<?php

// начало кода основной программы

/* определение функции суммы 3 параметров */
function mySumma($param1 = 0, $param2 = 0, $param3 = 0)
{
$temp = 0; // объявляем и определяем локальную переменную в функции
$temp = $param1 + $param2 + $param3; // суммируем все переданные 3 параметра

return $temp; // возвращаем результат из функции
}

// продолжение кода основной программы

/* вызываем функцию и получаем из неё значение */
$result = mySumma(); // вернет в $result - 0
$result = mySumma(1); // вернет в $result - 1
$result = mySumma(1,1); // вернет в $result - 2
$result = mySumma(1,2,3); // вернет в $result - 6

// конец кода основной программы

?>[/php]
Вообщем как видишь, функция у нас получает на входе параметры (какие либо данные для обработки), а на выходе мы имеем результат (функция возвращает результат).

Если вспомнить простейшую математику, нашу функцию можно записать так:
Y = F(x1,x2,x3)

где, в нашем случае:
Y - переменная для хранения результата $result
F - имя функции (к примеру в математике это cos, sin, tg, Im, Re и т.д.)
x1 - первый входной параметр $param1
x2 - второй входной параметр $param2
x3 - третий входной параметр $param3

Функция, зависящая от трех параметров. Если что-то не понятно, спрашивай.


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
sc2r2bey
sc2r2bey
Topic Starter сообщение 11.3.2010, 14:40; Ответить: sc2r2bey
Сообщение #6


а только так можно?

[php]/* вызываем функцию и получаем из неё значение */
$result = mySumma(); // вернет в $result - 0
$result = mySumma(1); // вернет в $result - 1
$result = mySumma(1,1); // вернет в $result - 2
$result = mySumma(1,2,3); // вернет в $result - 6[/php]


--------------------
Заметки о разработке и не только
программирую web и для we
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
gaaarfild
gaaarfild
сообщение 11.3.2010, 20:42; Ответить: gaaarfild
Сообщение #7


Так так и есть, просто там еще показано, как функция задается. Она же из воздуха не возьмется. А глобальные переменные если начнут пересекаться и путаться, найти ошибку будет очень сложно. Лучше возвращать.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 11.3.2010, 21:25; Ответить: ZiTosS
Сообщение #8


sc2r2bey, есть возможность передавать переменные не по значению, а по ссылке, тогда при изменении переменной в функции, значение изменится и вне функции. Передача переменной по ссылке осуществляется ростановкой при передачи знака & перед переменной. Пример:
[php]<?php


/* определение функции */
function myFunc($param)
{
$param++; // прибавляем к переменной единицу
// функция ничего не возвращает
}

$i = 0;

/* вызываем функцию и передаем переменную по ссылке */
myFunc(&$i);
echo $i; // 1

/* вызываем функцию и передаем переменную по ссылке */
myFunc(&$i);
echo $i; // 2

/* вызываем функцию и передаем переменную по значению */
myFunc($i);
echo $i; // 2 (значение не изменилось)

?>[/php]

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыКакая должна быть конверсия на партнёрской программе?
7 Bilish 1306 20.1.2020, 16:11
автор: Santey
Открытая тема (нет новых ответов) Присоединяйся к партнерской программе INGRAMER и зарабатывай прямо сейчас!
3 andynelson 1702 28.10.2019, 20:35
автор: -andyn-
Открытая тема (нет новых ответов) Команда Bitzlato.com приглашает вас присоединиться к нашей партнёрской программе!
2 Bitzlato 1996 1.8.2019, 17:29
автор: Bitzlato
Открытая тема (нет новых ответов) Заработок на партнёрской программе Freedom-Stat
0 freedomstat 2072 13.4.2019, 8:51
автор: freedomstat
Открытая тема (нет новых ответов) Заработок на партнерской программе Amazon Affiliates
2 Barbarossa 3220 22.3.2019, 12:42
автор: spomoni


 



RSS Текстовая версия Сейчас: 20.4.2024, 19:30
Дизайн