(PHP 4, PHP 5)
extract — 배열에서 현재 심볼 테이블로 변수를 입력
배열에서 현재 심볼 테이블로 변수를 가져옵니다.
extract()는 각 키가 유효한 변수명이 되는지 확인합니다. 심볼 테이블에 존재하는 변수와의 충돌 여부도 확인합니다.
연관 배열. 변수명을 키로, 변수값을 값으로 취급한다. extract_type 과 prefix 인수에 따라 각 키/값 쌍에 대해서 현재 심볼 테이블안에 변수를 생성한다.
연관 배열을 사용해야 합니다. 숫자 인덱스 배열은 EXTR_PREFIX_ALL이나 EXTR_PREFIX_INVALID를 사용하지 않는 한 결과를 생성하지 않습니다.
유효하지않은/숫자 키와 충돌인 경우를 취급하는 방법은 extract_type 에 의해 결정된다. 다음 값들 중 하나가 될 수 있다:
extract_type 가 설정되지 않으면, EXTR_OVERWRITE가 설정되어 있다고 가정한다.
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와 같은 순서로 추출해야 합니다.