update : 2015.11.03
php.shukuma.com

검색:
 
 
배열에서 현재 심볼 테이블로 변수를 입력

extract

(PHP 4, PHP 5, PHP 7)

extract배열에서 현재 심볼 테이블로 변수를 입력

설명

int extract ( array $var_array [, int $extract_type [, string $prefix ]] )

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

extract()는 각 키가 유효한 변수명이 되는지 확인합니다. 심볼 테이블에 존재하는 변수와의 충돌 여부도 확인합니다.

인수

var_array

연관 배열. 변수명을 키로, 변수값을 값으로 취급한다. extract_typeprefix 인수에 따라 각 키/값 쌍에 대해서 현재 심볼 테이블안에 변수를 생성한다.

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

extract_type

유효하지않은/숫자 키와 충돌인 경우를 취급하는 방법은 extract_type에 의해 결정된다. 다음 값들 중 하나가 될 수 있다:

EXTR_OVERWRITE
충돌이 발생하면, 기존 변수를 덮어쓴다.
EXTR_SKIP
충돌이 발생하면, 기존 변수를 덮어쓰지 않는다. variable.
EXTR_PREFIX_SAME
충돌이 발생하면, prefix를 변수명 앞에 첨가한다.
EXTR_PREFIX_ALL
prefix를 모든 변수명 앞에 첨가한다.
EXTR_PREFIX_INVALID
유효하지 않은/숫자 변수명 앞에만 prefix를 첨가한다.
EXTR_IF_EXISTS
현재 심볼 테이블에 이미 존재하는 변수만 덮어쓴다. 그렇지 않으면 아무것도 하지 않는다. 이 플래그는 유효한 변수 목록을 정의하고 이 변수들만 추출하는데 유용하다. 예를 들어, 이런 변수는 $_REQUEST에서 정의된 변수들이다.
EXTR_PREFIX_IF_EXISTS
현재 심볼 테이블에 앞첨가된 버전의 같은 변수가 존재할때만 앞첨가된 변수명을 생성한다.
EXTR_REFS
변수를 참조로써 추출한다. 입력된 변수 값이 var_array 인수의 값을 참조한다는 의미를 갖는다. 이 플래그는 그 자체로나 다른 플래그와 OR 연산하여 extract_type에서 사용할수 있다.

extract_type가 설정되지 않으면, EXTR_OVERWRITE가 설정되어 있다고 가정한다.

prefix

prefixextract_typeEXTR_PREFIX_SAME, EXTR_PREFIX_ALL, EXTR_PREFIX_INVALID, EXTR_PREFIX_IF_EXISTS일 경우에만 요구된다. 덧붙인 결과가 유효한 변수명이 아니면, 심볼 테이블에 입력되지 않는다. Prefix는 밑줄 문자로 배열 키와 자동으로 분리됩니다.

반환값

심볼 테이블에 성공적으로 입력된 변수의 수를 반환한다.

변경점

버전 설명
4.3.0 EXTR_REFS 추가.
4.2.0 EXTR_IF_EXISTSEXTR_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_arrayEXTR_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를 갖게한다.

주의

Warning

extract()를 사용자 입력($_GET, ...)같은 신뢰할 수 없는 데이터에 사용하지 마십시오. 예를 들어, register_globals에 의존하는 오래된 코드를 실행하기 위해 임시적으로 사용한다면, EXTR_SKIP 등의 덮어쓰지 않는 extract_type을 사용하고, php.ini 안에 정의되어 있는 variables_order와 같은 순서로 추출해야 합니다.

참고

  • compact() - 변수와 그 값을 가지는 배열 생성