(PHP 4, PHP 5, PHP 7)
extract — 배열에서 현재 심볼 테이블로 변수를 입력
$var_array
[, int $extract_type
[, string $prefix
]] )배열에서 현재 심볼 테이블로 변수를 가져옵니다.
extract()는 각 키가 유효한 변수명이 되는지 확인합니다. 심볼 테이블에 존재하는 변수와의 충돌 여부도 확인합니다.
var_array
연관 배열. 변수명을 키로,
변수값을 값으로 취급한다. extract_type과
prefix 인수에 따라 각 키/값 쌍에 대해서
현재 심볼 테이블안에 변수를 생성한다.
연관 배열을 사용해야 합니다. 숫자 인덱스 배열은
EXTR_PREFIX_ALL이나
EXTR_PREFIX_INVALID를 사용하지 않는 한 결과를
생성하지 않습니다.
extract_type
유효하지않은/숫자 키와 충돌인 경우를 취급하는 방법은
extract_type에 의해 결정된다.
다음 값들 중 하나가 될 수 있다:
EXTR_OVERWRITEEXTR_SKIPEXTR_PREFIX_SAMEprefix를
변수명 앞에 첨가한다.
EXTR_PREFIX_ALLprefix를 모든 변수명 앞에 첨가한다.
EXTR_PREFIX_INVALIDprefix를
첨가한다.
EXTR_IF_EXISTSEXTR_PREFIX_IF_EXISTSEXTR_REFSvar_array 인수의 값을 참조한다는 의미를
갖는다. 이 플래그는 그 자체로나 다른 플래그와 OR 연산하여
extract_type에서 사용할수 있다.
extract_type가 설정되지 않으면,
EXTR_OVERWRITE가 설정되어 있다고 가정한다.
prefix
prefix는
extract_type이 EXTR_PREFIX_SAME,
EXTR_PREFIX_ALL, EXTR_PREFIX_INVALID,
EXTR_PREFIX_IF_EXISTS일 경우에만 요구된다.
덧붙인 결과가 유효한 변수명이 아니면, 심볼 테이블에 입력되지 않는다.
Prefix는 밑줄 문자로 배열 키와 자동으로 분리됩니다.
심볼 테이블에 성공적으로 입력된 변수의 수를 반환한다.
| 버전 | 설명 |
|---|---|
| 4.3.0 |
EXTR_REFS 추가.
|
| 4.2.0 |
EXTR_IF_EXISTS와
EXTR_PREFIX_IF_EXISTS 추가.
|
| 4.0.5 |
추출한 변수의 수를 반환합니다.
EXTR_PREFIX_INVALID 추가.
EXTR_PREFIX_ALL이 숫자 변수도 포함합니다.
|
Example #1 extract() 예제
wddx_deserialize()에서 반환한 연관 배열에 포함되어 있는 변수들을 심볼 테이블로 가져오기 위해서 extract()를 사용할 수 있습니다.
<?php
/* $var_array가 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
$size는 덮어씌어지지 않았다, 왜냐하면
EXTR_PREFIX_SAME를 설정했기 때문이다.
결과적으로 $wddx_size가 생성되었다.
EXTR_SKIP가 설정되어 있으면,
EXTR_OVERWRITE 는 $size가
"medium" 값을 갖게 하고 EXTR_PREFIX_ALL는
새로운 변수인 $wddx_color,
$wddx_size, $wddx_shape를
갖게한다.
extract()를 사용자 입력($_GET,
...)같은 신뢰할 수 없는 데이터에 사용하지 마십시오. 예를 들어, register_globals에 의존하는 오래된
코드를 실행하기 위해 임시적으로 사용한다면, EXTR_SKIP
등의 덮어쓰지 않는 extract_type을 사용하고, php.ini 안에 정의되어 있는 variables_order와 같은 순서로
추출해야 합니다.