배열 list
(PHP 4, PHP 5, PHP 7, PHP 8)
list — 변수를 배열인 것처럼 할당
설명
list(mixed $var
, mixed ...$vars
= ?): array
array()와 마찬가지로 이것은 실제로 함수가 아니라 언어 구조입니다. list()는 한 번의 작업으로 변수 목록을 할당하는 데 사용됩니다. 문자열은 압축을 풀 수 없으며 list() 표현식은 완전히 비어 있을 수 없습니다.
메모: PHP 7.1.0 이전에는 list()가 숫자 배열에서만 작동했으며 숫자 인덱스가 0에서 시작한다고 가정합니다.
매개변수
var
- 변수.
vars
- 추가 변수.
반환 값
할당된 배열을 반환합니다.
변경 로그
버전 | 설명 |
---|---|
7.3.0 | 배열 구조화에서 참조 할당에 대한 지원이 추가되었습니다. |
7.1.0 | 이제 list()에서 키를 지정할 수 있습니다. 이를 통해 정수가 아니거나 순차 키가 아닌 배열을 구조화할 수 있습니다. |
Examples
예제 #1 list() 예제
<?php
$info = array('coffee', 'brown', 'caffeine');
// Listing all the variables
list($drink, $color, $power) = $info;
echo "$drink is $color and $power makes it special.\n";
// Listing some of them
list($drink, , $power) = $info;
echo "$drink has $power.\n";
// Or let's skip to only the third one
list( , , $power) = $info;
echo "I need $power!\n";
// list() doesn't work with strings
list($bar) = "abcde";
var_dump($bar); // NULL
?>
예제 #2 list() 사용 예
<?php
$result = $pdo->query("SELECT id, name FROM employees");
while (list($id, $name) = $result->fetch(PDO::FETCH_NUM)) {
echo "id: $id, name: $name\n";
}
?>
예제 #3 중첩 list() 사용
<?php
list($a, list($b, $c)) = array(1, array(2, 3));
var_dump($a, $b, $c);
?>
int(1) int(2) int(3)
예제 #4 list() 및 인덱스 정의 순서
list()가 사용할 배열의 인덱스가 정의되는 순서는 관련이 없습니다.
<?php
$foo = array(2 => 'a', 'foo' => 'b', 0 => 'c');
$foo[1] = 'd';
list($x, $y, $z) = $foo;
var_dump($foo, $x, $y, $z);
다음 출력을 제공합니다(list() 구문에서 작성된 순서와 비교한 요소의 순서에 유의).
array(4) { [2]=> string(1) "a" ["foo"]=> string(1) "b" [0]=> string(1) "c" [1]=> string(1) "d" } string(1) "c" string(1) "d" string(1) "a"
예제 #5 키가 있는 list()
PHP 7.1.0부터 list()는 임의의 표현식으로 제공될 수 있는 명시적 키도 포함할 수 있습니다. 정수 및 문자열 키의 혼합이 허용됩니다. 그러나 키가 있거나 없는 요소는 혼합할 수 없습니다.
<?php
$data = [
["id" => 1, "name" => 'Tom'],
["id" => 2, "name" => 'Fred'],
];
foreach ($data as ["id" => $id, "name" => $name]) {
echo "id: $id, name: $name\n";
}
echo PHP_EOL;
list(1 => $second, 3 => $fourth) = [1, 2, 3, 4];
echo "$second, $fourth\n";
위의 예는 다음을 출력합니다.
id: 1, name: Tom id: 2, name: Fred 2, 4