Использование списков
Использование функции, которая возвращает массив данных, является одним из способов передачи нескольких значений из функции. Существует модификация этого способа, при котором используется списки переменных.
Для описания списка переменных применяется системная функция list, осуществляющая присвоение перечисленным при ее вызове переменным значений элементов массива. Для демонстрации использования этой функции взята функция array_doubler из предыдущего раздела, которая удваивает значения элементов массива.
Пусть требуется присвоить первые шесть элементов удвоенного массива переменным $first, $second, $third и т.д. Этого можно достичь при помощи конструкции следующего вида:
list($first, $second, $third, $fourth, $fifth, $sixth) = array_doubler($array);
Пример демонстрирует использование данного способа. Таким образом можно осуществить передачу из функции нескольких значений. Альтернативой служит передача аргумента по ссылке.
<HTML> <HEAD> <TITLE>Использование функции list</TITLE> </HEAD> <BODY> <H1>Использование функции list </H1> <?php function array_doubler($arr) { for ($loop_index = 0; $loop_index < count($arr); $loop_index++) { $arr[$loop_index] *= 2; } return $arr; } $array = array(1, 2, 3, 4, 5, 6); list($first, $second, $third, $fourth, $fifth, $sixth) = array_doubler($array); echo "\$first: $first<BR>"; echo "\$second: $second<BR>"; echo "\$third: $third<BR>"; echo "\$fourth: $fourth<BR>"; echo "\$fifth: $fifth<BR>"; echo "\$sixth: $sixth<BR>"; ?> </BODY> </HTML>
В том случае, если требуется использовать только первые три элемента массива для присвоения их значений переменным, соответствующий оператор выглядит следующим образом (лишние элементы массива, который возвращает функция, просто игнорируются):
list($first, $second, $third) = array_doubler($array); echo "\$first: $first\n"; echo "\$second: $second\n"; echo "\$third: $third\n";
Следует обратить внимание на то, что использование функции list для формирования массива некорректно. Следующий фрагмент кода является ошибочным:
return list($arr[0], $arr[1], $arr[2], $arr[3], $arr[4], $arr[5]);
Автор: Стивен Хольцнер. Переводчик: С. Банников