PHP 매뉴얼
이전 |  | 다음

# extract

(PHP 3>= 3.0.7, PHP 4 , PHP 5)

extract -- 배열의 현재 심볼 테이블로 변수들을 입력한다

## 설명

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

이 함수는 배열의 값들을 현재 심볼 테이블에 입력하는데 사용된다. 연관 배열 `var_array`를 취해서 변수명을 키로, 변수값을 값으로 취급한다. `extract_type`과 `prefix` 에 따라 각 키/값 쌍에 대해서 현재 심볼 테이블안에 변수를 생성한다.

> 참고: 버전 4.0.5에 시작하여, 이 함수는 추출된 변수의 수를 반환한다.

> 참고: `EXTR_IF_EXISTS`과 `EXTR_PREFIX_IF_EXISTS`는 버전 4.2.0에서부터 지원된다.

> 참고: `EXTR_REFS` 버전 4.3.0부터 지원된다.

extract()는 각 키가 유효한 변수명을 갖을수 있는지 검사 한다. 또한 심볼 테이블에 존재하는 변수들과의 충돌도 검사한다. 유효하지않은/숫자 키와 충돌인 경우를 취급하는 방법은 `extract_type`에 의해 결정된다. 다음 값들 중 하나가 될 수 있다:

`EXTR_OVERWRITE`

  충돌이 발생하면, 기존 변수를 덮어쓴다.

`EXTR_SKIP`

  충돌이 발생하면, 기존 변수를 덮어쓰지 않는다. variable.

`EXTR_PREFIX_SAME`

  충돌이 발생하면, `prefix`를 변수명 앞에 첨가한다.

`EXTR_PREFIX_ALL`

  `prefix`를 모든 변수명 앞에 첨가한다. PHP 4.0.5에서 시작하여, 이 플래그는 숫자 변수도 적용된다.

`EXTR_PREFIX_INVALID`

  유효하지 않은/숫자 변수명 앞에만 `prefix`를 첨가한다. 이 플래그는 PHP 4.0.5에서 추가되었다.

`EXTR_IF_EXISTS`

  현재 심볼 테이블에 이미 존재하는 변수만 덮어쓴다. 그렇지 않으면 아무것도 하지 않는다. 이 플래그는 유효한 변수 목록을 정의하고 이 변수들만 추출하는데 유용하다. 예를 들어, 이런 변수는 $_REQUEST에서 정의된 변수들이다. 이 플래그는 PHP 4.2.0에서 추가되었다.

`EXTR_PREFIX_IF_EXISTS`

  현재 심볼 테이블에 앞첨가된 버전의 같은 변수가 존재할때만 앞첨가된 변수명을 생성한다. 이 플래그는 PHP 4.2.0에서 추가되었다.

`EXTR_REFS`

  변수를 참조로써 추출한다. 입력된 변수 값이 `var_array` 매개변수의 값을 참조한다는 의미를 갖는다. 이 플래그는 그 자체로나 다른 플래그와 OR 연산하여 `extract_type`에서 사용할수 있다. 이 플래그는 PHP 4.3.0에서 추가되었다.

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

`prefix`는 `extract_type`이 `EXTR_PREFIX_SAME`, `EXTR_PREFIX_ALL`,`EXTR_PREFIX_INVALID` 또는, `EXTR_PREFIX_IF_EXISTS` 일때만 요구된다. 앞 첨가된 변수가 유효한 변수명이 아니면, 심볼테이블에 입력되지 않는다.

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

extract()가 사용가능한 경우는 wddx_deserialize()에서 반환한 연관배열에 포함되어있는 심볼 테이블 변수들 안에 입력하는것이다.

예 1. extract() 예제코드

`<?php /* Suppose that $var_array is an array returned from wddx_deserialize */ $size = "large"; $var_array = array ("color" => "blue", "size" => "medium", "shape" => "sphere"); extract ($var_array, EXTR_PREFIX_SAME, "wddx"); print "$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`를 갖게한다.

연관 배열을 사용해야 한다. `EXTR_PREFIX_ALL` 나 `EXTR_PREFIX_INVALID`를 사용하지 않으면 숫자로 인덱스된 배열은 결과를 도출할수 없다.

compact() 참고.

이전 | 처음으로 | 다음
end | 위로 | in_array