배열 extract

(PHP 4, PHP 5, PHP 7, PHP 8)

extract — 배열에서 현재 기호 테이블로 변수 가져오기


설명

extract(array &$array, int $flags = EXTR_OVERWRITE, string $prefix = ""): int

배열에서 현재 기호 테이블로 변수를 가져옵니다.

각 키에 유효한 변수 이름이 있는지 확인합니다. 또한 기호 테이블에 있는 기존 변수와의 충돌을 확인합니다.

경고 사용자 입력(예: $_GET, $_FILES)과 같이 신뢰할 수 없는 데이터에는 extract()를 사용하지 마십시오.


매개변수

array
연관 배열입니다. 이 함수는 키를 변수 이름으로, 값을 변수 값으로 취급합니다. 각 키/값 쌍에 대해 flagsprefix 매개변수에 따라 현재 기호 테이블에 변수를 생성합니다.

연관 배열을 사용해야 합니다. 숫자 인덱스 배열은 EXTR_PREFIX_ALL 또는 EXTR_PREFIX_INVALID를 사용하지 않는 한 결과를 생성하지 않습니다.

flags
유효하지 않은/숫자 키와 충돌이 처리되는 방식은 추출 flags에 의해 결정됩니다. 다음 값 중 하나일 수 있습니다.
EXTR_OVERWRITE
충돌이 있는 경우 기존 변수를 덮어씁니다.
EXTR_SKIP
충돌이 있는 경우 기존 변수를 덮어쓰지 마십시오.
EXTR_PREFIX_SAME
충돌이 있는 경우 변수 이름에 prefix를 붙입니다.
EXTR_PREFIX_ALL
모든 변수 이름에 prefix를 붙입니다.
EXTR_PREFIX_INVALID
유효하지 않은/숫자 변수 이름에만 prefix를 붙입니다.
EXTR_IF_EXISTS
현재 심볼 테이블에 이미 존재하는 변수만 덮어쓰고, 그렇지 않으면 아무 작업도 하지 않습니다. 이것은 유효한 변수 목록을 정의한 다음 $_REQUEST에서 정의한 변수만 추출하는 데 유용합니다.
EXTR_PREFIX_IF_EXISTS
현재 기호 테이블에 동일한 변수의 접두사가 붙지 않은 버전이 있는 경우에만 접두사가 붙은 변수 이름을 생성하십시오.
EXTR_REFS
변수를 참조로 추출합니다. 이는 가져온 변수의 값이 여전히 array 매개변수의 값을 참조하고 있음을 의미합니다. 이 플래그를 단독으로 사용하거나 flags를 OR'하여 다른 플래그와 결합할 수 있습니다.

flags를 지정하지 않으면 EXTR_OVERWRITE로 간주됩니다.

prefix
flagsEXTR_PREFIX_SAME, EXTR_PREFIX_ALL, EXTR_PREFIX_INVALID 또는 EXTR_PREFIX_IF_EXISTS인 경우에만 prefix가 필요합니다. 접두사가 붙은 결과가 유효한 변수 이름이 아니면 기호 테이블로 가져오지 않습니다. 접두사는 밑줄 문자로 배열 키에서 자동으로 분리됩니다.

Examples

예제 #1 extract() 예제

extract()의 가능한 사용은 wddx_deserialize()에 의해 반환된 연관 배열에 포함된 기호 테이블 변수로 가져오는 것입니다.

                  
<?php
/* Suppose that $var_array is an array returned from
   wddx_deserialize */

$size = "large";
$var_array = array("color" => "blue",
                   "size"  => "medium",
                   "shape" => "sphere");
extract($var_array, EXTR_PREFIX_SAME, "wddx");

echo "$color, $size, $shape, $wddx_size\n";
?>
                  
                

위의 예는 다음을 출력합니다.

blue, large, sphere, medium
                

EXTR_PREFIX_SAME를 지정하여 $wddx_size가 생성되었기 때문에 $size를 덮어쓰지 않았습니다. EXTR_SKIP이 지정되었다면 $wddx_size도 생성되지 않았을 것입니다. EXTR_OVERWRITE$size의 값이 "medium"이 되도록 하고 EXTR_PREFIX_ALL$wddx_color, $wddx_size$wddx_shape라는 이름의 새 변수를 생성합니다.


메모

경고 사용자 입력(예: $_GET, $_FILES 등)과 같이 신뢰할 수 없는 데이터에는 extract()를 사용하지 마십시오. 그럴 경우 EXTR_SKIP과 같은 덮어쓰지 않는 flags 값 중 하나를 사용하고 php.ini 내의 variables_order에 정의된 것과 동일한 순서로 추출해야 한다는 점에 유의하십시오.


기타

  • compact() - 변수와 그 값을 포함하는 배열 생성
  • list() - 변수를 배열인 것처럼 할당