Обмен значениями без временных переменных

Задача
Необходимо взаимно обменять значения двух переменных без использования дополнительной переменной для промежуточного хранения значений.

Решение
Взаимно обменять $a и $b можно так:

list($a,$b) = array($b,$a);

Обсуждение
Конструкция языка PHP list() позволяет присваивать значения из массива отдельным переменным. Ее двойник, функция array(), стоящая в правой части выражения, позволяет конструировать массивы из отдельных переменных. Присваивание массива, возвращенного функцией array(), переменным в функции list() позволяет жонглировать порядком этих значений. Этот способ подходит и для более чем двух переменных, например:
list($yesterday,$today,$tomorrow) = array($today,$tomorrow,$yesterday);

Данный способ не дает преимущества в скорости по сравнению с временными переменными, поэтому его применяют для прозрачности кода, а не ради скорости.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Операторы == и =: как избежать путаницы
Получение дампа содержимого переменных в виде строк
Сериализация данных сложных типов в виде строки
Совместное использование переменных процессами
Создание динамического имени переменной

Вернуться в раздел: PHP / 5. Переменные