php
PHP - extract 함수
int extract ( array $var_array [, int $extract_type [, string $prefix ]] )
(PHP 4, PHP 5)
extract_type 과 prefix 인자에 따라 각 키/값 쌍에 대해서 현재 심볼 테이블 안에 변수를 생성합니다. 이 말은 연관배열에 아무런 영향을 주지 않고, 새로운 변수를 생성한다는 점입니다.
위 예제와 같이 $_GET 이나 $_POST 등 신뢰성이 떨어지는 데이터에 extract 함수를 사용하는 것에 주의해야 할 필요가 있음을 메뉴얼에서 권고합니다. GET, POST 등의 다른 변수를 전역으로 가져오고 싶다면 import_request_variables 함수를 사용하길 권장합니다.
유효하지 않은 변수명이나 변수 변형이 필요한 경우 extract_type 에 다음 표의 상수로 정의할 수 있습니다.
extract_type 인자가 설정되지 않으면, 기본적으로 EXTR_OVERWRITE가 설정되어 있다고 가정합니다.
(PHP 4, PHP 5)
extract_type 과 prefix 인자에 따라 각 키/값 쌍에 대해서 현재 심볼 테이블 안에 변수를 생성합니다. 이 말은 연관배열에 아무런 영향을 주지 않고, 새로운 변수를 생성한다는 점입니다.
<?php
$arr = array('a'=>'one','b'=>'two','c'=>'three');
extract($arr);
echo "$a, $b, $c"; // 결과: one, two, three
// 이 함수는 새로운 변수를 생성하며,
// 기존 배열에 아무런 영향을 주지 않습니다.
print_r($arr);
/*
결과:
Array
(
[a] => one
[b] => two
[c] => three
)
*/
?>
위 예제와 같이 $_GET 이나 $_POST 등 신뢰성이 떨어지는 데이터에 extract 함수를 사용하는 것에 주의해야 할 필요가 있음을 메뉴얼에서 권고합니다. GET, POST 등의 다른 변수를 전역으로 가져오고 싶다면 import_request_variables 함수를 사용하길 권장합니다.
유효하지 않은 변수명이나 변수 변형이 필요한 경우 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가 설정되어 있다고 가정합니다.
<?php
if(isset($_FILES["file"])){
extract($_FILES);
extract($file);
echo $name."<br/>\n";
echo $tmp_name."<br/>\n";
echo $size."<br/>\n";
}
$size = "large";
$var_array = array("color" => "blue",
"size" => "medium",
"shape" => "sphere");
// $size 변수가 중복이 되므로 변수를 갖는
// size 앞에 $wddx를 추가합니다.
// EXTR_PREFIX_SAME 대신에 EXTR_OVERWRITE 를
// 설정했다면, $size는 medium을 갖게 됩니다.
extract($var_array, EXTR_PREFIX_SAME, "wddx");
echo "$color, $size, $shape, $wddx_size\n";
// 결과: blue, large, sphere, medium
// 생성되는 변수에 모두 $var_를 붙입니다.
$z = array('foo', 'bar');
extract($z, EXTR_PREFIX_ALL, 'var');
echo "$var_0, $var_1"; // 결과: foo, bar
?>
0 댓글