(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_OVERWRITE
EXTR_SKIP
EXTR_PREFIX_SAME
prefix
를
변수명 앞에 첨가한다.
EXTR_PREFIX_ALL
prefix
를 모든 변수명 앞에 첨가한다.
EXTR_PREFIX_INVALID
prefix
를
첨가한다.
EXTR_IF_EXISTS
EXTR_PREFIX_IF_EXISTS
EXTR_REFS
var_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와 같은 순서로
추출해야 합니다.