<?php
$mass = array(1 => 3, 2 => 4, 3 => 6, 4 => 13);
function func1 ($mass) {
$i = 1;
$sum = 0;
$sa = 0;
while ($i != 3) {
$sum = $sum + $mass[i];
$i++;
}
$sa = $sum / 4;
return $sa;
}
func1($sa);
echo 'Среднее арифметическое = '.$sa;
?>
на выходе получается "Среднее арифметическое = "
Спустя 2 минуты, 12 секунд (10.12.2011 - 23:08) inpost написал(а):
func1($sa); - Что за переменная sa? Её нет в скрипте!
Спустя 2 минуты, 10 секунд (10.12.2011 - 23:10) redreem написал(а):
$sum = $sum + $mass[i];
заменить на
$sum = $sum + $mass[$i];
Спустя 22 секунды (10.12.2011 - 23:10) Rain8207 написал(а):
хм, я ввел её в функции, а потом после выполнения действий вернул её, и вызвал функцию с её значением, видно что-то не понимаю.
Спустя 2 минуты, 4 секунды (10.12.2011 - 23:12) redreem написал(а):
<?php
$mass = array(1 => 3, 2 => 4, 3 => 6, 4 => 13);
function func1 (&$mass) {
$i = 1;
$sum = 0;
$sa = 0;
while ($i != 3) {
$sum = $sum + $mass[$i];
$i++;
}
$sa = $sum / 4;
return $sa;
}
echo 'Среднее арифметическое = '. func1($mass);
?>
Спустя 4 минуты, 23 секунды (10.12.2011 - 23:17) redreem написал(а):
а еще лучше так:
:)
<?php
$mass = array(1 => 3, 2 => 4, 3 => 6, 4 => 13);
function func1 (&$mass) {
$sum = 0;
foreach ($mass as $i => $v) $sum = $sum + $v;
return $sum / count($mass);
}
echo 'Среднее арифметическое = '. func1($mass);
?>
:)
Спустя 7 минут, 39 секунд (10.12.2011 - 23:24) Rain8207 написал(а):
я вот понять немогу, вызов функции возвращает то значение что указанно в return? тоесть пишу:
а возвращается $sum, потому что оно в return записанно?
echo func1 ($mass);
а возвращается $sum, потому что оно в return записанно?
Спустя 41 секунда (10.12.2011 - 23:25) Self написал(а):
$mass = array(1 => 3, 2 => 4, 3 => 6, 4 => 13);
$sa = array_sum($mass)/count($mass);
echo 'Среднее арифметическое = '.$sa;
Спустя 4 секунды (10.12.2011 - 23:25) Dron19 написал(а):
Попробуй так, если со своей функцией хочешь
<?php
$mass = array(3,5,7,4,6,3,35,435,64); // создаем массив
function func1 ($mass) { // объявляем функцию
$i = 0; // приравниваем i к нулю =)
$size = sizeof($mass); // получаем размер массива
while ($i != $size) { // прогоняем в цикле по числу значений в массиве
$sum += $mass[$i]; // складываем все значения
$i++; // прибавляем единицу к начальному значению
}
$sa = $sum / $size; // заносим в переменную sa среднее ариф. знач.
return $sa; // возвращаем результат
}
echo 'Среднее арифметическое = '. func1($mass); // задаем функции параметр и выводим
?>
Спустя 2 минуты, 36 секунд (10.12.2011 - 23:28) Rain8207 написал(а):
мне бы было полезнее не готовые скрипты кидать, а объяснить что в моём не так, суть то там правильна, а вот с устройством функции и её возвратом у меня проблемы.
Я как понимаю, функция - штука изолированная, ну вот я и достал из неё переменную $sa с помощью return. Но кажется неправильно понимаю.
Я как понимаю, функция - штука изолированная, ну вот я и достал из неё переменную $sa с помощью return. Но кажется неправильно понимаю.
Спустя 4 минуты, 34 секунды (10.12.2011 - 23:32) Dron19 написал(а):
я прокомментировал твой код и немного его сократил
Спустя 6 минут, 6 секунд (10.12.2011 - 23:38) Rain8207 написал(а):
Хоть убейте, не понимаю :(
почему мы пишем func1($mass); а не func1($sa);
Инструкцией return мы вытаскиваем значение переменной $sa из функции в основной скрипт, ну и нужно отобразить эту переменную, => вызвать функцию и указать в скобках $sa, как бы поймать его после того как вытащили из функции. А на деле $mass там написанно..
echo 'Среднее арифметическое = '. func1($mass);
почему мы пишем func1($mass); а не func1($sa);
Инструкцией return мы вытаскиваем значение переменной $sa из функции в основной скрипт, ну и нужно отобразить эту переменную, => вызвать функцию и указать в скобках $sa, как бы поймать его после того как вытащили из функции. А на деле $mass там написанно..
Спустя 5 минут, 18 секунд (10.12.2011 - 23:44) Winston написал(а):
Цитата (Rain8207 @ 10.12.2011 - 22:38) |
почему мы пишем func1($mass); а не func1($sa); |
Почитай про аргументы функций.
PS: у Self'a самое лучшее решение.
Спустя 1 минута, 45 секунд (10.12.2011 - 23:45) Dron19 написал(а):
вот смотри, ты в функции прописал return $sa; -это означает, что функция возвращает значение переменной са, которая находится в локальной области видимости, то есть внутри функции, внешне ты ее использовать не можешь, а функция сама принимает параметр в виде массива и с ним работает, что-то там делает и в итоге возвращает результат, который указан внутри нее
Спустя 1 минута, 43 секунды (10.12.2011 - 23:47) Dron19 написал(а):
Цитата (Winston @ 10.12.2011 - 20:44) | ||
Почитай про аргументы функций. PS: у Self'a самое лучшее решение. |
дело не в том, чье лучшее решение, человек разобраться в своем коде хочет, вот я и пытаюсь ему помочь
Спустя 5 минут, 6 секунд (10.12.2011 - 23:52) Rain8207 написал(а):
Dron19, спасибо, теперь дошло)
Спустя 1 минута, 34 секунды (10.12.2011 - 23:54) Dron19 написал(а):
$word = "Hello"; // создаем переменную и приравниваем значение
function test($t) { // тут мы даем названием аргументам функции
if($t == "Hello") return 5; else return 10;
}
echo test($word); // то есть мы переменной t в функции
// приравниваем значение переменной word и уже работаем с
// переменной t как с word и что-то там делаем и в итоге решаем, что вернет функция
// а вот то, что она вернет, мы уже выводим на экран
Попробуй разобраться в этом коде, если поймешь, то думаю вопросы исчезнут, несколько раз проговори алгоритм сам себе
Спустя 1 минута, 18 секунд (10.12.2011 - 23:55) Winston написал(а):
Цитата (Dron19 @ 10.12.2011 - 22:54) |
if($t == "Hello") return 5; else return 10; |
И еще про тернарный оператор почитай

Спустя 12 секунд (10.12.2011 - 23:55) Dron19 написал(а):
Цитата (Rain8207 @ 10.12.2011 - 20:52) |
Dron19, спасибо, теперь дошло) |
обращайся

Спустя 1 минута, 8 секунд Dron19 написал(а):
Цитата (Winston @ 10.12.2011 - 20:55) | ||
И еще про тернарный оператор почитай ![]() |
да пусть пока в этом разберется, если бы я тернарный написал, то опять бы вопросы возникли

Спустя 1 час, 18 минут, 10 секунд (11.12.2011 - 01:13) johniek_comp написал(а):