Возвращение нескольких значений. Конструкция 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 не является функцией, а представляет собой отдельную конструкцию языка, что, впрочем, не отменяет ее удобства. Подобный подход распространяется и в другие языки, например,

Практика:

  1. Сделать функцию, которая разбивает число на два множителями. Множители должны возвращаться из функции.

results matching ""

    No results matching ""