>백엔드 개발 >PHP 튜토리얼 >PHP extract() 함수(배열 분할) 정의 및 사용법

PHP extract() 함수(배열 분할) 정의 및 사용법

WBOY
WBOY원래의
2016-07-25 08:54:091439검색
  1. $a = '원본';
  2. $my_array = array("a" => "고양이","b" => "개", "c" => "말");
  3. extract($my_array)
  4. echo "$a = $a; $c = $c" ;
  5. ?>
코드 복사

출력:

$a = 고양이; $b = 개; $c = 말

예시 2 모든 매개변수를 사용합니다.

  1. $a = '원본';

  2. $my_array = array("a" => "고양이","b" => "개", "c" => "말");

  3. extract($my_array, EXTR_PREFIX_SAME, 'dup' );

  4. echo "$a = $a; $b = $b; $c = $c; $dup_a = $dup_a;"

  5. ?>< /p>
코드 복사

출력: $a = 원본; $b = 개; $c = 말; $dup_a = 고양이;

PHP 추출() 함수

최근 멋진 사람의 코드를 보다가 매우 유용한 함수인 extract()를 봤습니다. 주요 기능은 키 이름이 변수 이름으로 사용되며 요소는 다음과 같습니다. value는 변수 값입니다. 이 작업은 배열보다 또 다른 편리한 도구를 제공합니다. Fang은 $_POST 또는 $_GET 요소를 추출하는 것이 쉽다고 말했습니다. 양식에 제출된 콘텐츠는 하나씩 할당할 수 없습니다.

form.html

코드 복사

action.php에서 extract() 함수를 사용하여 $_POST 전역 데이터를 추출하세요. 액션.php

  1. extract($_POST)
  2. //$username = $_POST['username']; 🎜>//$password = $_POST['password']
  3. ?>
코드 복사

다음은 PHP 매뉴얼에 자세히 설명되어 있습니다.

추출 (PHP 4, PHP 5)

추출 — 배열의 변수를 현재 기호 테이블로 가져옵니다

설명 int 추출(배열 $var_array [, int $extract_type [, 문자열 $prefix ]] )

이 함수는 배열의 변수를 현재 기호 테이블로 가져오는 데 사용됩니다. 연관 배열 var_array를 인수로 받아들이고 키 이름을 변수 이름으로, 값을 변수 값으로 사용합니다. 각 키/값 쌍에 대해 현재 기호 테이블에 변수가 생성되고 다음 조건이 적용됩니다. extract_type 및 접두사 매개변수의 효과.

참고: 버전 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 충돌이 있는 경우 기존 변수를 덮어쓰지 않습니다. EXTR_PREFIX_SAME 충돌이 있는 경우 변수 이름 앞에 prefix 를 붙입니다. EXTR_PREFIX_ALL 모든 변수 이름 앞에는 prefix 를 붙입니다. PHP 4.0.5부터 여기에는 숫자 인덱스 처리도 포함됩니다. EXTR_PREFIX_INVALID 잘못된/숫자 변수 이름에만 접두사를 붙입니다. 이 태그는 PHP 4.0.5에서 새로 추가되었습니다. EXTR_IF_EXISTS 현재 기호 테이블에 이미 존재하는 경우에만 동일한 이름의 변수 값을 덮어씁니다. 그 외는 처리되지 않습니다. 합법적인 변수 집합이 정의된 후 $_REQUEST와 같은 배열에서 값을 추출하여 이러한 변수를 덮어쓰고 싶을 때 사용할 수 있습니다. 이 마크는 PHP 4.2.0의 새로운 기능. EXTR_PREFIX_IF_EXISTS 현재 심볼 테이블에 동일한 이름의 변수가 이미 존재하는 경우에만 접두어가 붙은 변수 이름이 생성되고 다른 작업은 수행되지 않습니다. 이 태그는 PHP 4.2.0에서 새로 추가되었습니다. EXTR_REFS 변수를 참조로 추출합니다. 이는 가져온 변수가 여전히 var_array 매개변수의 값을 참조하고 있다는 강력한 표시입니다. 이 플래그는 단독으로 사용하거나 extract_type에서 OR을 사용하여 다른 플래그와 조합하여 사용할 수 있습니다. 이 태그는 PHP 4.3.0입니다. 새로 추가되었습니다. extract_type을 지정하지 않으면 EXTR_OVERWRITE가 가정됩니다.

접두사는 extract_type 값이 EXTR_PREFIX_SAME, EXTR_PREFIX_ALL, EXTR_PREFIX_INVALID 또는 EXTR_PREFIX_IF_EXISTS인 경우에만 필요합니다. 접두어를 붙인 결과가 합법적인 변수명이 아닌 경우, 기호 테이블로 가져오지 않습니다. 접두사와 배열 키 이름 사이에 밑줄이 자동으로 추가됩니다.

extract()는 기호 테이블로 성공적으로 가져온 변수의 수를 반환합니다.

경고

사용자 입력($_GET,…)과 같이 신뢰할 수 없는 데이터에는 extract()를 사용하지 마세요. 예를 들어, Register_globals에 의존하는 이전 코드를 일시적으로 실행하려면 덮어쓰지 않는 extract_type 값을 사용해야 합니다. , EXTR_SKIP과 같은 파일이며 php.ini의 Variable_order에 정의된 순서대로 추출되어야 한다는 점에 유의하세요.

extract()의 한 가지 가능한 용도는 wddx_deserialize()에서 반환된 결합 배열의 내용을 기호 테이블 변수로 가져오는 것입니다.

예:

  1. /* $var_array가 wddx_deserialize*/에 의해 반환된 배열이라고 가정합니다.
  2. $size = "large"; > $var_array = array("color" => "파란색",
  3. "size" => "medium",
  4. "shape" => "sphere")
  5. extract($var_array, EXTR_PREFIX_SAME, "wddx");
  6. echo "$color, $size, $shape, $wddx_sizen"
  7. ?>
코드 복사
출력 : 파란색, 대형, 구형, 중형

EXTR_PREFIX_SAME이 지정되어 $wddx_size가 빌드되므로 $size가 재정의되지 않습니다. EXTR_SKIP을 지정하면 $wddx_size도 생성되지 않습니다. EXTR_OVERWRITE는 $size의 값을 만듭니다. "medium"의 경우 EXTR_PREFIX_ALL은 새로운 변수 $wddx_color, $wddx_size 및 $wddx_shape를 생성합니다.

연관 배열을 사용해야 하며, EXTR_PREFIX_ALL 또는 EXTR_PREFIX_INVALID를 사용하지 않는 한 숫자로 인덱스된 배열은 결과를 생성하지 않습니다.


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.