현재 위치: > 최신 기사 목록> 다차원 배열 처리를위한 Filter_var_Array 방법

다차원 배열 처리를위한 Filter_var_Array 방법

gitbox 2025-05-29

php에서 filter_var_array는 배열에서 데이터를 필터링하고 검증하는 데 매우 실용적인 기능입니다. 많은 개발자들이 질문에 직면 할 것입니다 : filter_var_array가 다차원 배열을 처리 할 수 ​​있습니까? 이 기사는이 질문에 자세히 답변하고 사용법과 예방 조치를 소개합니다.


1. Filter_var_Array 소개

filter_var_array 함수는 지정된 필터를 배열의 각 요소에 적용 할 수 있으며 종종 $ _get, $ _post 또는 $ _cookie 배열과 같은 사용자 입력 데이터를 처리하는 데 사용됩니다. 기본 사용량은 다음과 같습니다.

 <?php
$data = [
    'email' => '[email protected]',
    'age' => '25',
];

$filters = [
    'email' => FILTER_VALIDATE_EMAIL,
    'age' => [
        'filter' => FILTER_VALIDATE_INT,
        'options' => ['min_range' => 18, 'max_range' => 65]
    ],
];

$result = filter_var_array($data, $filters);
var_dump($result);
?>

위의 코드는 사서함이 유효한지 확인하고 나이가 18 세에서 65 세 사이인지 확인합니다.


2. Filter_var_Array가 다차원 배열을 처리 할 수 ​​있습니까?

기본적으로 Filter_var_Array는 1 차원 배열 만 처리합니다. 즉, 배열의 첫 번째 레이어를 반복하고 각 키 값 쌍에 대한 필터링 규칙을 적용합니다. 다차원 배열의 경우 내부 레이어 어레이를 재귀 적으로 처리하지 않습니다.

예를 들어:

 <?php
$data = [
    'user' => [
        'email' => '[email protected]',
        'age' => '25',
    ],
    'status' => 'active'
];

$filters = [
    'user' => FILTER_DEFAULT,  // 여기 맞습니다"user"배열에 해당합니다,기본적으로 내부 요소는 필터링되지 않습니다
    'status' => FILTER_SANITIZE_STRING,
];

$result = filter_var_array($data, $filters);
var_dump($result);
?>

결과적으로 사용자 에 해당하는 배열은 그대로 반환되며 필터링되지 않습니다.


3. 다차원 배열을 다루는 방법?

다차원 배열을 필터링 해야하는 경우 Filter_Var_Array 자체는 재귀 작업을 직접 지원할 수 없습니다. 일반적인 관행은 재귀 함수를 작성하거나 다차원 배열을 통해 반복하거나 각 레이어에 대해 Filter_Var_Array를 호출하거나 Filter_var를 사용하는 것입니다.

샘플 코드 :

 <?php
function recursive_filter_var_array(array $data, array $filters) {
    $result = [];
    foreach ($filters as $key => $filter) {
        if (is_array($filter) && isset($data[$key]) && is_array($data[$key])) {
            // 다차원 배열을 재귀 적으로 처리합니다
            $result[$key] = recursive_filter_var_array($data[$key], $filter);
        } elseif (isset($data[$key])) {
            // 개별 요소를 필터링하십시오
            if (is_array($filter)) {
                $result[$key] = filter_var($data[$key], $filter['filter'], $filter['options'] ?? []);
            } else {
                $result[$key] = filter_var($data[$key], $filter);
            }
        }
    }
    return $result;
}

// 샘플 데이터 및 필터링 규칙
$data = [
    'user' => [
        'email' => '[email protected]',
        'age' => '30',
    ],
    'status' => 'active<script>',
];

$filters = [
    'user' => [
        'email' => FILTER_VALIDATE_EMAIL,
        'age' => [
            'filter' => FILTER_VALIDATE_INT,
            'options' => ['min_range' => 18, 'max_range' => 65],
        ],
    ],
    'status' => FILTER_SANITIZE_STRING,
];

$result = recursive_filter_var_array($data, $filters);
var_dump($result);
?>

이 재귀 기능을 통해 다차원 배열을 유연하게 처리하고 데이터를 계층 적으로 필터링 할 수 있습니다.


4. filter_var_array를 사용할 때 주목해야 할 사항

  1. 필터링 규칙 및 배열 구조는 <br>에 해당해야합니다 . 필터링 규칙 배열의 구조는 필터링 배열의 구조와 일치해야합니다. 그렇지 않으면 필터링 실패 또는 데이터 손실이 발생합니다.

  2. filter_var_array는 재귀 <br>을 지원하지 않습니다 기본적으로 1 차원 배열 만 처리되며 다차원 필터링을 구현하기 위해 재귀 함수를 직접 작성해야합니다.

  3. 합리적인 필터 선택 <br> 사서함의 경우 filter_validate_email 과 같은 데이터 유형에 따라 적절한 필터를 선택, 정수의 경우 filter_validate_int 및 문자열의 경우 filter_sanitize_string 등을 선택하십시오.

  4. 옵션 구성 <br> 필터링의 유연성과 보안을 향상시키기 위해 범위 제한, 기본값 등과 같은 필터에 대해 옵션을 설정할 수 있습니다.


5. 요약

Filter_var_array 는 PHP의 강력한 배열 필터링 도구이지만 1 차원 배열 만 지원합니다. 다차원 배열을 처리하려면 재귀 필터링 기능을 직접 구현하는 것이 좋습니다. 필터링 규칙 및 구조를 합리적으로 설계함으로써 데이터 보안 및 효율성을 효과적으로 보장 할 수 있습니다.

더 많은 PHP 관련 팁 및 예를 보려면 https://gitbox.net/php/filter_var_array를 방문하여 자세한 내용을보십시오.