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



 

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

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

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> function
vasvas7775
vasvas7775
Topic Starter сообщение 25.9.2011, 14:00; Ответить: vasvas7775
Сообщение #1


ребят, такой вопрос.
К примеру 2е функции, в одной есть переменная, так вот вопрос, как эту переменную использовать в другой функции?
[PHP]
print f();
print r();

function f(){
$ss = 'sdddddddddd';
}

function r(){
print $ss;
}
[/PHP]
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 25.9.2011, 14:14; Ответить: alexdrob
Сообщение #2


Для начала понять, что для того это и функция, что бы внутри была локальная область видимости, и переменная была не доступна из вне. Разобраться для чего нужны функции, для этого почитать книги не обязательно по пхп, просто теорию хороших авторов. И в конце концов переписать код.
Очень много способов это сделать, но не просто передачей. Это может быть класс, может передача по ссылке, может возвращаемое значение функции. Но так как вы написали, писать нельзя.проще тогда сделать просто код, без функций.
[PHP]$ss = 'sdddddddddd';
print $ss;[/PHP]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
SEVI
SEVI
сообщение 25.9.2011, 14:16; Ответить: SEVI
Сообщение #3


1:
[PHP]function f(){
$GLOBALS['ss'] = 'sdddddddddd';
}
function r(){
print $GLOBALS['ss'] ;
}f();r();
[/PHP]
2:
[PHP]function f(){
return 'sdddddddddd';
}
function r($ss){
print $ss;
}
$ss=f();
r($ss);
[/PHP]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 25.9.2011, 14:19; Ответить: alexdrob
Сообщение #4


(SEVI @ 25.9.2011, 17:16) *
1:
1
2
3
4
5
6
function f(){**
$GLOBALS['ss'] = 'sdddddddddd';
}
function r(){**
print $GLOBALS['ss'] ;
}f();r();

вот так как раз делать и не нужно :) хуже стиля быть просто не может :)
Второй вариант гораздо правильней
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
thesat
thesat
сообщение 25.9.2011, 15:13; Ответить: thesat
Сообщение #5


А чем чревато применение первого варианта SEVI? На примере если не затруднительно.. Или просто такой стиль не отвечает нормам этики? :)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
vasvas7775
vasvas7775
Topic Starter сообщение 25.9.2011, 15:49; Ответить: vasvas7775
Сообщение #6


(alexdrob @ 25.9.2011, 17:19) *
function f(){**
$GLOBALS['ss'] = 'sdddddddddd';
}
function r(){**
print $GLOBALS['ss'] ;
}f();r();

вот так как раз делать и не нужно :) хуже стиля быть просто не может :)
Второй вариант гораздо правильней


Ну а как же тогда сделать, если переменная не одна а несколько, и запихать их нужно в разные функции, а значение из них, собрать в одной?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 25.9.2011, 16:01; Ответить: alexdrob
Сообщение #7


thesat, а какой смысл тогда в функции? Вы работаете с глобальной областью видимости так. Ну тогда просто объявите переменную как global.
А плохо это тем, что когда у вас разрастётся код, вы легко в одном месте перетрёте переменную другим значением из за совпадения имени, и буквально месяц назад уже была тема из за таких подходов, когда у человека в цикле вызывался инклуд, а в том инклуде была такая же переменная, в результате он несколько дней искал где же ошибка.
По этому "нормы этики" и были придуманы. Я не написал что невозможно, я написал не нужно.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 25.9.2011, 16:04; Ответить: alexdrob
Сообщение #8


[PHP]function a()
{
$a = ...
...
return $a;
}

function b()
{
$a = ...
...
return $a;
}

function c()
{
$a = ...
...
return $a;
}[/PHP]

например так

[PHP]function f()
{
print a() + b() + c();
}[/PHP]

вообще всё сильно зависит от того что вы хотите.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
thesat
thesat
сообщение 25.9.2011, 16:22; Ответить: thesat
Сообщение #9


А если так:
[PHP]
$arr = (2,3,0,0);
function a() {
global $arr;
$arr[2] = $arr[0]+$arr[1];
$arr[3] = $arr[0]*$arr[1];
}
[/PHP]

Будет ли массив иметь новые значения вне функции? Я думаю именно об этом спрашивал ТС.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
SEVI
SEVI
сообщение 25.9.2011, 19:19; Ответить: SEVI
Сообщение #10


vasvas7775, в одну функцию можно пихать очень много элементов. Допустим: function($ss,$sd,$sn,...) {print $ss . $sd . $sn . ...;}
thesat, насколько я знаю будет. Да и вообще использование global лучше в плане удобства. Обьявил один раз и юзай без всяких массивов)) Хотя можно сделать так:
[PHP]$a = $GLOBALS['a'];[/PHP] но это уже изобретание велосипеда.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


 



RSS Текстовая версия Сейчас: 25.4.2024, 12:14
Дизайн