За последние 24 часа нас посетили 52653 программиста и 1764 робота. Сейчас ищут 852 программиста ...

Функция использование ... для получения аргументов

Тема в разделе "Прочие вопросы по PHP", создана пользователем KOKS1999, 23 янв 2015.

  1. KOKS1999

    KOKS1999 Новичок

    С нами с:
    11 янв 2015
    Сообщения:
    67
    Симпатии:
    0
    Код (Text):
    1. <?php
    2. function sum(...$numbers) {
    3.     $acc = 0;
    4.     foreach ($numbers as $n) {
    5.         $acc += $n;
    6.     }
    7.     return $acc;
    8. }
    9.  
    10. echo sum(1, 2, 3, 4);
    11. ?>
    Я не могу догнать почему выводит 10?
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    а сколько должно выводить?
     
  3. KOKS1999

    KOKS1999 Новичок

    С нами с:
    11 янв 2015
    Сообщения:
    67
    Симпатии:
    0
    Не знаю.
    Как он выводит 10?
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    php код оформляй в теге [code=php][/code]

    раз не знаешь почитай документацию по тем функциям и лексемам что используешь
     
  5. KOKS1999

    KOKS1999 Новичок

    С нами с:
    11 янв 2015
    Сообщения:
    67
    Симпатии:
    0
    7 пример.
    Там не описано как получилось и т.д.
     
  6. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  7. KOKS1999

    KOKS1999 Новичок

    С нами с:
    11 янв 2015
    Сообщения:
    67
    Симпатии:
    0
    Я щас подумаю и разберусь.
    xD
     
  8. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    1 + 2 + 3 + 4 = 10. ВАШ КЭП.

    Код (Text):
    1. $acc += $n;
    Все тут случается. Оператор вида $a+=$b идентичен конструкции $a=$a+$b.
    Аналогично работают -= *= .= /=

    $numbers собирает полученные аргументы как массив.
    Идешь по массиву, плюсуешь каждую его часть к накопителю $acc.
    Отдаешь $acc.

    Броу, если это настолько неочевидно, то у тебя проблемы...
     
  9. KOKS1999

    KOKS1999 Новичок

    С нами с:
    11 янв 2015
    Сообщения:
    67
    Симпатии:
    0
    Код (Text):
    1. return $acc;
    Что оно делает.
    Я просто поспешил с вопросом, а так начинаю вдуплять.
     
  10. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    [​IMG]

    Добавлено спустя 1 минуту 4 секунды:
    Иди читай, что такое функции вообще.
     
  11. KOKS1999

    KOKS1999 Новичок

    С нами с:
    11 янв 2015
    Сообщения:
    67
    Симпатии:
    0
    Она типо активирует процесс выполнения того что написано в переменной?

    Код (Text):
    1. <?php
    2. function mySum($numX, $numY){
    3.    $total = $numX + $numY;
    4.  return $total;
    5. }
    6. $myNumber = 0;
    7. echo "$myNumber <br />";
    8. $myNumber = mySum(3, 4); // Сохраняем результат вызова функции mySum в переменную $myNumber
    9. echo "$myNumber <br />";
    10. ?>
    $total = $numX + $numY;
    return $total; - слаживает $numX + $numY то есть 3 и 4
     
  12. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    KOKS1999, читай книги, там всё с причинно следственными связями.
    А документация для внимательных и умеющих использовать поиск.
    https://php.net/manual/ru/function.return.php

    Ты лепил снежки и клал их в ведро, return это когда ты это ведро со снежками передал тем кто их будет кидать.
     
  13. KOKS1999

    KOKS1999 Новичок

    С нами с:
    11 янв 2015
    Сообщения:
    67
    Симпатии:
    0
    Я это раз 10 прочитал и не понял.
     
  14. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    [​IMG]

    Ты сам понял, что написал-то?

    Добавлено спустя 40 секунд:
    Ну тогда ты безнадежен. Увы.
     
  15. KOKS1999

    KOKS1999 Новичок

    С нами с:
    11 янв 2015
    Сообщения:
    67
    Симпатии:
    0
    Не безнадёжен, я все рамно пойму что делает return.
     
  16. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    KOKS1999, ну есть функция f(x) = x * 2
    если f(2) то будет 4
    это понятно человеку, а вот программе мы указываем return чтобы закончить выполнение функции и вернуть результат её выполения

    Код (PHP):
    1. function summ($x)
    2. {
    3.   $tmp = $x * 2;
    4.   return $tmp;
    5. }
    6.  
    7. $result = summ(2);
    8. echo $result; // результат будет 4
    9.  
     
  17. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Ты даже не понимаешь, что такое переменная пока что.
    $total = $numX + $numY; - ты не операцию сложения записываешь в $total, а результат.
    return $total; - ты не активируешь ранее записанную операцию сложения, а возвращаешь результат.

    return - это ответ функции на вызов.
    Это то, что как бы займет место функции там, где она вызвана.

    echo sum(1,2); идентично echo (3);

    Потому что в sum эти два числа складываются и return отдает 3.

    Добавлено спустя 51 секунду:
    Ты гуманитарий чтоли? Не ищи сложное в простом. Не ищи глубинный смысл в операторах.