PHP 언어에서 변수를 생성하는 방법은 기본적으로 $키워드와 함께 변수명을 입력한 리터럴 방식이 쓰인다. 만약 하나의 배열값이 존재하고 이 배열값이 수많은 개별 변수의 정보를 가지고 있다면? 각각의 데이터를 통해 한번에 변수를 만들 수 있다면 굉장히 편리할 것이다.

이 편리한 기능을 php에서 제공하는데 바로 list() 함수이다. list() 함수를 사용하면 배열안에 포함된 값을 순서대로 정해진 배열명에 차곡차곡 입력해서 각각의 변수로 반환하여 준다... 이 간단한 방법이 없다면 어떻게 될까? 배열값이 10,000개인 직원 데이터를 각각의 변수로 바꾼다고 가정해보자. (사실 현실적으로 배열값을 그대로 쓰지 꼭 변환할 필요는 거의 없겠지만;;;)

어쨌든 list() 함수의 간단한 사용방법은 아래와 같다.


list(등록할 변수명, ... , 등록할 변수명)

위와같이 변수명은 등록한 배열의 수 만큼 등록해서 변수로 만들 수 있다. 그럼 간단한 예제를 보면서 알아보도록 하자.


# list() 함수로 배열만드는 방법 예제보기
<?php
$test = array('1', '2', '3');
// $test 변수는 3개의 값 1,2,3을 가짐

list($a, $b, $c) = $test;
// 마치 변수를 선언하듯이 사용(단, 앞에 list() 키워드가 필요)

echo $a;
echo $b;
echo $c;
?>

예상했겠지만 위 list() 함수에 의해 3개의 새로운 변수 $a, $b, $c가 생성되었고 echo를 사용해 화면에 출력된다. 위 경우는 세개만 사용해 각각의 변수로 선언하였으나 실제로는 더 많은 변수의 변환에 사용될 것이라 예상할 수 있다. 사실 적은 수의 변수 생성은 큰 도움은 되지 않을 것이다.

좀 더 알아보자... 여기서 만약 오직 변수 두개만 필요하다면 이 경우 어떻게 해야할까?


# list()를 사용해 오직 변수 두개만 만드는 방법
<?php
list($a, $b) = $test;
?>

특별한 방법이 존재하는 것이 아니라 전달할 인자로 두개만 사용하면된다. 다시 설명하면... 배열이 가진 개수에 상관없이 우리가 만들고자 하는 개수... 즉 원하는 변수의 개수만 선택하여 결정할 수 있다는 점이다.

여기서 또 다른 질문... 만약 3번째 값만 사용해 변수를 만드려면? 즉, 원하는 위치에 있는 값만 변수로 생성할 수 있는가의 여부는?
물론 가능하다. 아래의 마지막 예제를 통해 알아보도록 하자.

# 특정 위치의 값만 사용해 만드는 방법
<?php
list( , , $a);
?>

매우 특이하고 보기에 가독성은 좋지 않은 방법이다. 빈자리는 null값이 되어 자동으로 skip되고 세번째 값을 사용해 변수 $a가 생성된다. 사실 매우 보기는 않좋으나 이해하기에는 직관적으로 쉬울 수 있다. 어쨌든 우리가 원하는 결과는 얻을 수 있다!