Может ли функция вернуть 2 значения?

$a = 2; $b = 3;
function Num($a, $b){
   $c = $a + $b;
   $d = $a * $b;
   return $c, $d; // Вот тут весь вопрос
}

Вопрос: я могу с помощью return вернуть не одно а два значения без бубнов типа implode или объединениях их в массив и т.п.?

Или мне тут по уму надо 2 функции писать - одна вернёт значение сложения а вторая умножения?
  • Вопрос задан
  • 1832 просмотра
Решения вопроса 2
Stalker_RED
@Stalker_RED
Можно вернуть массив
$a = 2; $b = 3;
function Num($a, $b){
   $c = $a + $b;
   $d = $a * $b;
   return [$c, $d];
}
list($c, $d) = Num($a, $b);
echo "$c|$d";
// 5|6


Можно изменить переменную через указатель

$a = 2; $b = 3; $c = $d = null;
function Num($a, $b, &$c, &$d){
   $c = $a + $b;
   $d = $a * $b;
}

Num($a, $b, &$c, &$d);
echo "$c|$d";
// 5|6


А если вы напишете
return $c;
return $d;

то сработает только первый. после return функция возвращает значение и выполнение дальше не идет.
Ответ написан
chernish2
@chernish2
Ruby-программист
Только если обернуть в массив или в объект
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы