Возвращение нескольких значений. Конструкция list
В предыдущих пунктах мы познакомились с конструкцией return. Она позволяет вернуть из функции значения. Но что делать, если значений несколько?
Допустим нам нужно одновременно вернуть из функции $a и $b - что делать в такой ситуации? Никто не запрещает нам обернуть эти переменные в массив и вернуть как одно целое, например:
return array($a,$b);
или с версии 5.4
return [$a,$b];
Но есть один минус - теперь из функции, мы получаем массив, и чтобы достать из него значения $a и $b - нужно потратить усилия.
Например:
$res = func();
$a = $res[0];
$b = $res[1];
К счастью, в PHP есть конструкция list, которая позволяет реализовать данные действия в одну строчку.
list($a,$b) = func();
list работает не только с результатами функций, но с любыми массивами. Единственный момент, что в первый параметр list'a идет нулевой элемент массива, во второй параметр первый элемент массива и т.д. Т.е. если у нас массив со строковыми ключами list как следует не сработает.
Подробнее о list можно прочитать на официальном сайте http://php.net/manual/ru/function.list.php
Нужно понимать, что list не является функцией, а представляет собой отдельную конструкцию языка, что, впрочем, не отменяет ее удобства. Подобный подход распространяется и в другие языки, например,
Практика:
- Сделать функцию, которая разбивает число на два множителями. Множители должны возвращаться из функции.