end
in_array
배열 함수 목록
PHP Manual

# extract

(PHP 4, PHP 5)

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

### 설명

int extract ( array `$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`
    충돌이 발생하면, 기존 변수를 덮어쓰지 않는다. 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`

  `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를 갖게한다.

### 주의

Warning

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

### 참고

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

end
in_array
배열 함수 목록
PHP Manual