-5

Пример такой:

function hello(){
    echo "Hello!";
}

$a = hello();

Нужно записать полученную в результате работы функции строку "Hello!" в переменную $a, а вместо этого получаю выведенную строку "Hello!" и пустую переменную $a. Оператора вывода нет же. Что я не доучил?

Torawhite
  • 271
  • 2
  • 11
  • 4
    echo "Hello!"; - это у современных студентов означает "нет оператора вывода?" – Ипатьев Feb 07 '16 at 17:26
  • 3
    return 'Hello!' - так из функции возвращают значения. Есть и экзотические способы, но вам пока и этого хватит – BOPOH Feb 07 '16 at 17:27
  • @Ипатьев А почему строка в переменную не попадает? Я же не просто делаю вызов функции hello(); Мне нужно формировать строку с различными условиями и циклами. Как всё это через return вернуть? Например у меня в функции распечатывается массив циклов foreach – Torawhite Feb 07 '16 at 17:33
  • @BOPOH как в таком случае использовать return? – Torawhite Feb 07 '16 at 17:34
  • 1
    @Torawhite, а вы документацию читали? – Dmitriy Simushev Feb 07 '16 at 17:36
  • 3
    "Что я не доучил?" - Чуть более, чем всё. –  Feb 07 '16 at 17:39
  • почитайте на досуге что-нибудь из этого списка – BOPOH Feb 07 '16 at 17:42
  • @DmitriySimushev а как тут быть с return: `function hello($b){ if($b == 1){ echo "
      ";
        foreach($array AS $key => $value){
            echo "<li>$value</li>";
        }        
    
        echo "</ul>";
    }else{
        echo "Error";
    }
    
    

    }

    $a = hello(1);`

    – Torawhite Feb 07 '16 at 17:48
  • 2
    книжки читайте, зачем вы выводите, если вам достаточно все это в переменной хранить, а потом уже ее и возвращать. Хотя бы "php за 21 день" почитайте - уже представление иметь будете; только потом не забудьте нормальные книжки почитать, а то только хуже сделаете – BOPOH Feb 07 '16 at 17:50
  • 2
    @Torawhite, echo - оператор вывода, если не надо выводить. не надо его использовать – Grundy Feb 07 '16 at 17:56

2 Answers2

4

Все просто. Функция вывода вообще-то есть: echo.

Его аналог - функция print

Если вы хотите, чтобы функция что-то возвращала, то ей об этом нужно явно указать:

function LearnDocumentation (){
  $eyes = false;     // Оператором "=" присваивается значение переменной
  return "Не хочу!"; // Ключевое слово "return" возвращает значение.
}

$mustLearn = LearnDocumentation();

// А теперь мы можем, если захотим, вывести результат выполнения функции
print $mustLearn;
RostD
  • 758
  • Спасибо! LearnDocumentation и её содержимое повеселило! –  Feb 07 '16 at 17:52
  • @RostD это-то понятно. А как быть со сложной строкой, которую формирует функция? Выше указал – Torawhite Feb 07 '16 at 17:53
  • @Torawhite, вы разве еще не поняли как работает система? Читайте документацию! – Dmitriy Simushev Feb 07 '16 at 17:54
  • Понял, примерно - `$b = 1; function hello($b){ if($b == 1){ $array = array("a" => "orange", "b" => "banana", "c" => "apple"); foreach($array AS $key => $value){ $string .= "
  • $value
  • "; }
        return "<ul>" . $string . "</ul>";
    }else{
        return "Error";
    }
    
    

    }

    $a = hello(1); echo $a;`

    – Torawhite Feb 07 '16 at 18:09
  • Спасибо всем большое! Не судите строго! – Torawhite Feb 07 '16 at 18:10