[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Область видимости переменных
zvezda_t
Здравствуйте, уважаемые программисты!

У меня есть массив и функция.

$m_val=array("Иванов","Петров");
global $m_val;

function fun1()
{
global $m_val;
$r=implode(' , фамилия:', $m_val);
return $r;
}


Скажите пожалуйста, как еще можно передать массив в функцию?
Я не хочу передавать массив в функцию как параметр функции. Может как то ч/з классы можно? И вообще как правильно?



Спустя 12 минут, 59 секунд (9.03.2011 - 09:34) alex12060 написал(а):
Вот так)


$m_val=array("Иванов","Петров");

function fun1($fio)
{
$r=implode(' , фамилия:', $fio);
return $r;
}

$new = fun1($m_val);


В качестве параметра)

Спустя 38 минут, 49 секунд (9.03.2011 - 10:13) twin написал(а):
В функцию никак. А если "через клссы", то это уже не функция, а метод. Делается так:
<?php 

class
Example
{

public $m_val = array("Иванов", "Петров");

public function fun1()
{
$r = implode(' , фамилия:', $this->m_val);
return $r;
}

}


$obj = new Example();
echo $obj -> fun1();

либо так:
class Example
{

static $m_val = array("Иванов", "Петров");

static function fun1()
{
$r = implode(' , фамилия: ', self::$m_val);
return $r;
}

}


echo Example::fun1();

Спустя 7 минут, 31 секунда (9.03.2011 - 10:20) linker написал(а):
Как вариант, если очень хочется оставить именно функцию, а не метод
class Families
{
public static $m_val=array("Иванов","Петров");
}

function fun1()
{
$r=implode(' , фамилия:', Families::$m_val);
return $r;
}

$new = fun1();

Спустя 8 минут, 17 секунд (9.03.2011 - 10:28) zvezda_t написал(а):
КРУТО!!!
спасибо огромное!!!!!!!!!!! smile.gif smile.gif smile.gif smile.gif smile.gif

Спустя 38 минут, 16 секунд (9.03.2011 - 11:07) zvezda_t написал(а):
Цитата (linker @ 9.03.2011 - 07:20)
Как вариант, если очень хочется оставить именно функцию, а не метод
class Families
{
    public static $m_val=array("Иванов","Петров");
}

function fun1()
{
    $r=implode(' , фамилия:', Families::$m_val);
    return $r;
}

$new = fun1();

запуталась я...
а как быть, если массив $m_val, в свою очередь тоже из функции получается?

function fun_lastname()
{
//фамилии
$result=mssql_query("SELECT name FROM dbo.users");
while($row=mssql_fetch_array($result))
{
$m_name[]=$row['name'];
}
return $m_name;
}

$m_val=fun_lastname();

Спустя 30 минут, 3 секунды (9.03.2011 - 11:37) alex12060 написал(а):

<?php
class
test {

var $fio;

function __construct() {
$this->connect(); // Connect to BD
}

protected function connect() {

// Connect to BD
}

function fun_lastname()
{
//фамилии
$result=mssql_query("SELECT name FROM dbo.users");
while($row=mssql_fetch_array($result))
{
$m_name[]=$row['name'];
}

$ret = $this->fun1($m_name);

return $ret;
}

public function fun1($fio)
{
$r = implode(' , фамилия:', $fio);
return $r;
}
}



$obj = new test;

echo $obj->fun_lastname();

Спустя 3 минуты, 39 секунд (9.03.2011 - 11:40) Invis1ble написал(а):
zvezda_t
имхо, объявляй просто как глобальную и все:
$var = 'Привет!';
function test()
{
global $var;
return $var;
}
echo test();

Спустя 29 минут, 26 секунд (9.03.2011 - 12:10) zvezda_t написал(а):
alex12060
а где задаётся $m_val?

Спустя 22 минуты, 32 секунды (9.03.2011 - 12:32) linker написал(а):
class Families
{
public static $m_val = array();
}

function fun_lastname()
{
//фамилии
$result=mssql_query("SELECT name FROM dbo.users");
while($row=mssql_fetch_array($result))
{
array_push(Families::$m_val, $row['name']);
}
}


fun_lastname();
или
class Families
{
public static $m_val = array();
}

function fun_lastname()
{
//фамилии
$result=mssql_query("SELECT name FROM dbo.users");
$m_name = array();
while($row=mssql_fetch_array($result))
{
array_push($m_name, $row['name']);
}
return $m_name;
}

Families::$m_val = fun_lastname();

Спустя 11 минут, 21 секунда (9.03.2011 - 12:44) zvezda_t написал(а):
linker, я в восторге!!!!)))))))))
БОЛЬШОЕ ТЕБЕ ЧЕЛОВЕЧЕСКОЕ - СПАСИБО!!!

Спустя 14 минут, 56 секунд (9.03.2011 - 12:59) zvezda_t написал(а):
linker
и в первом и во втором случае, если я буду обращаться к массиву Families::$m_val
функция fun_lastname() будет вызвана лишь один раз? rolleyes.gif

Спустя 18 минут, 51 секунда (9.03.2011 - 13:17) linker написал(а):
Один раз вызывала, данные заполнились и все, дальше можешь эти данные использовать как тебе требуется.

Спустя 1 минута, 56 секунд (9.03.2011 - 13:19) zvezda_t написал(а):
Цитата (linker @ 9.03.2011 - 10:17)
Один раз вызывала, данные заполнились и все, дальше можешь эти данные использовать как тебе требуется.

поняла! спасибо smile.gif

Спустя 3 часа, 29 минут, 54 секунды (9.03.2011 - 16:49) m4a1fox написал(а):
zvezda_t
У меня вопрос к Вам. А что Вы реализуете при помощи этого кода. Ну то есть какой есть результат, то что linker напечатал.

Спустя 1 час, 12 минут, 24 секунды (9.03.2011 - 18:02) alex12060 написал(а):
пардон, не заметил)
Ну да ладно, мой код все равно не нужен)

Спустя 13 часов, 18 минут, 22 секунды (10.03.2011 - 07:20) zvezda_t написал(а):
Цитата (m4a1fox @ 9.03.2011 - 13:49)
zvezda_t
У меня вопрос к Вам. А что Вы реализуете при помощи этого кода. Ну то есть какой есть результат, то что linker напечатал.

Здравствуйте, m4a1fox.
Этот код для меня - пример: как задать статическую переменную класса и потом её использовать в любой части кода. Дело в том что у меня очень много функций, в которых используется одна и та же переменная(в моём случае массив), и мне бы не хотелось менять теперь все функции - добавляя в качестве параметра массив. А вот переменная класса - меня в данном случае спасает - так как её область видимости распространяется на любую ф-цию.


_____________

Что ты сделал сегодня - для завтра?
"Приидите ко Мне вси труждающиеся и обремененнии и Аз упокою вы, возмите иго Мое на себе и научитеся от Мене яко кроток есмь и смирен сердцем и обрящете покой душам вашим, иго бо Мое благо и бремя Мое легко есть."(Мф. 11:28-30)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.