Помощник
|
function |
vasvas7775
|
Сообщение
#1
|
||
|
|
||
|
|||
alexdrob |
25.9.2011, 14:14;
Ответить: alexdrob
Сообщение
#2
|
|
Для начала понять, что для того это и функция, что бы внутри была локальная область видимости, и переменная была не доступна из вне. Разобраться для чего нужны функции, для этого почитать книги не обязательно по пхп, просто теорию хороших авторов. И в конце концов переписать код.
Очень много способов это сделать, но не просто передачей. Это может быть класс, может передача по ссылке, может возвращаемое значение функции. Но так как вы написали, писать нельзя.проще тогда сделать просто код, без функций. [PHP]$ss = 'sdddddddddd'; print $ss;[/PHP] |
|
|
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 |
25.9.2011, 14:19;
Ответить: alexdrob
Сообщение
#4
|
|
|
|
|
thesat |
25.9.2011, 15:13;
Ответить: thesat
Сообщение
#5
|
|
А чем чревато применение первого варианта SEVI? На примере если не затруднительно.. Или просто такой стиль не отвечает нормам этики? :)
|
|
|
vasvas7775
|
Сообщение
#6
|
|
function f(){** $GLOBALS['ss'] = 'sdddddddddd'; } function r(){** print $GLOBALS['ss'] ; }f();r(); вот так как раз делать и не нужно :) хуже стиля быть просто не может :) Второй вариант гораздо правильней Ну а как же тогда сделать, если переменная не одна а несколько, и запихать их нужно в разные функции, а значение из них, собрать в одной? |
|
|
alexdrob |
25.9.2011, 16:01;
Ответить: alexdrob
Сообщение
#7
|
|
thesat, а какой смысл тогда в функции? Вы работаете с глобальной областью видимости так. Ну тогда просто объявите переменную как global.
А плохо это тем, что когда у вас разрастётся код, вы легко в одном месте перетрёте переменную другим значением из за совпадения имени, и буквально месяц назад уже была тема из за таких подходов, когда у человека в цикле вызывался инклуд, а в том инклуде была такая же переменная, в результате он несколько дней искал где же ошибка. По этому "нормы этики" и были придуманы. Я не написал что невозможно, я написал не нужно. |
|
|
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 |
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 |
25.9.2011, 19:19;
Ответить: SEVI
Сообщение
#10
|
|
vasvas7775, в одну функцию можно пихать очень много элементов. Допустим: function($ss,$sd,$sn,...) {print $ss . $sd . $sn . ...;}
thesat, насколько я знаю будет. Да и вообще использование global лучше в плане удобства. Обьявил один раз и юзай без всяких массивов)) Хотя можно сделать так: [PHP]$a = $GLOBALS['a'];[/PHP] но это уже изобретание велосипеда. |
|
|
|
Текстовая версия | Сейчас: 25.4.2024, 12:14 |