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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Область видимости переменной из одной функции, в другой, используя старые значения 
V
    Опции темы
LESSSS
Дата 6.3.2007, 04:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Люди, ХЕЛП!!!!
Где только не искал, не могу уже  smile  Сил моих больше нет...
Есть такой алгоритм:

Код

function korni()
{

$x = array(0.5, 0.05, 0.22, 0.43, 0.06, 0.6, 0.08, 0.05, 0.05, 1.01, 0.5, 1.11, 0.56, 0.29, 0.1);
$y = array(3.15, 1.26, 1.95, 2.94, 1.21, 3.71, 1.4, 1.36, 1.34, 6.32, 3.15, 7.17, 3.49, 2.13, 1.5);

$summa_x = 0;
$summa_y = 0;
$summa_xx = 0;
$summa_xxx = 0;
$summa_xxxx = 0;
$summa_xy = 0;
$summa_xxy = 0;
$n = count($x);
 for ($i = 0; $i < count($x); $i++)
 {

  $summa_x += $x[$i];
  $summa_y += $y[$i];
  $summa_xx += pow($x[$i], 2);
  $summa_xxx += pow($x[$i], 3);
  $summa_xxxx += pow($x[$i], 4);
  $summa_xy += $x[$i]*$y[$i];
  $summa_xxy += pow($x[$i], 2)*$y[$i];

 }

$a = array(array($n, $summa_x, $summa_xx, $summa_y),
           array($summa_x, $summa_xx, $summa_xxx, $summa_xy),
           array($summa_xx, $summa_xxx, $summa_xxxx, $summa_xxy));

return $a;

}

function gaus($i, $j, $k)
{

 $a = korni();

 if ($i == $k)
 if ($k == 1)

  $result = $a[$k-1][$j-1]/$a[$k-1][$k-1];

  else

   $result = gaus($k, $j, $k-1)/gaus($k, $k, $k-1);

   else
     if ($k == 1)

      $result = $a[$i-1][$j-1] - $a[$k-1][$j-1] * $a[$i-1][$k-1]/$a[$k-1][$k-1];

      else

       $result = gaus($i, $j, $k-1) - gaus($k, $j, $k-1) * gaus($i, $k, $k-1)/gaus($k, $k, $k-1);

return $result;

}


Он в общем работает, но мне хотелось бы совета, правильно ли таким образом функция присваивать другой переменной в другой функции только для того, чтобы можно было использовать переменную, я имею в виду переменную $a - массив, мне он нужен в функции gaus!!! 
Так вот: можно ли как-нибудь подругому сообразить этот алгоритм. Может как-то через глобальные переменные...?
Очень надо!!!
Заранее благобдарю




M
mishaSL
Используйте теги "КОД" (code)


Это сообщение отредактировал(а) mishaSL - 6.3.2007, 10:49
PM MAIL   Вверх
mishaSL
Дата 6.3.2007, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 19
Всего: 54



LESSSS, в чем заключается вопрос. У вас работает код? Или Вас интересует каким еще методом можно вернуть данные (1. Как у Вас возвращать значения функцией (предпочтительный вариант), 2. Передавать данные в функцию по ссылке и там уже изменять). 


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
LESSSS
Дата 6.3.2007, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



В том то и дело, что код работает, мне просто интресно каким еще способом можно в функцию вернуть массив из другой функции...
PM MAIL   Вверх
mishaSL
Дата 6.3.2007, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 19
Всего: 54



Цитата(LESSSS @  6.3.2007,  11:56 Найти цитируемый пост)
каким еще способом можно в функцию вернуть массив из другой функции


Передать переменную (в данном случае массив) по ссылке, т.е. (этот код не несет смысловой нагрузки):
Код

function test_a(& $arr)
{
    $arr = array(1,2,3);
    return true;
}

function test_b()
{
    $a = array();
    test_a($a);
    print '<pre>'.print_r($a, true).'</pre>';
    return true;
}


Но в Вашем случае лучше чтобы функция возвращала значения (т.е. return $arr).




--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
LESSSS
Дата 6.3.2007, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо!!! Попробовал - тоже катит, супер...
Последний вопрос - какой из способов лучше:
- первоначальный (которым я делал)???
или
- через ссылку???
PM MAIL   Вверх
mishaSL
Дата 6.3.2007, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 19
Всего: 54



Цитата(LESSSS @  6.3.2007,  13:00 Найти цитируемый пост)
какой из способов лучше


В данном случае первоначальный.  Которым Вы делалиsmile 


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
LESSSS
Дата 6.3.2007, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Последний вопрос:
как узнать в каком случае нужно передавать по ссылке, а в каком случае обычным методом???
PM MAIL   Вверх
mishaSL
Дата 6.3.2007, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 19
Всего: 54



Цитата(LESSSS @  6.3.2007,  13:13 Найти цитируемый пост)
как узнать в каком случае нужно передавать по ссылке, а в каком случае обычным методом???


точного определения этого нет. Есть удобство. Вообще нужно стараться чтобы любая функция что-либо возвращала.

Скажем удобно передавать переменую по ссылке  и получать значения, когда функция выполняет определенные действия и возвращает определенный результат, а последним не обязятельным параметром в нее передается переменная по ссылке в которую записывается дополнительная информация (какая зависит от деталей).


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
LESSSS
Дата 6.3.2007, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



спасибо большое!!!!!!!!!! smile 
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.0492 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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