>  기사  >  백엔드 개발  >  PHP 다차원 배열 필터링 방법

PHP 다차원 배열 필터링 방법

PHPz
PHPz원래의
2023-04-18 09:47:26861검색

PHP에서 데이터를 처리하는 것은 매우 일반적인 요구 사항이며, 그 중 다차원 배열은 일반적인 데이터 구조 중 하나입니다. 그러나 다차원 배열을 사용하는 경우 데이터의 정확성과 적법성을 보장하기 위해 일부 데이터 필터링 작업을 수행하는 것을 피할 수 없습니다. 이 기사에서는 PHP의 다차원 배열 필터링 방법을 소개합니다.

1. 필터링 방법 array_map

array_map()은 하나 이상의 배열에 있는 각 요소를 지정된 사용자 정의 콜백 함수에 전달하고 새 배열을 반환할 수 있는 PHP에서 제공하는 함수입니다. 콜백 함수.

array_map() 함수를 사용하여 다차원 배열 필터링을 구현할 수 있습니다. 구체적인 방법은 먼저 다차원 배열을 순회하고 필터링이 필요한 요소를 필터 함수에 전달하여 처리한 다음 처리된 결과를 새 배열에 저장하는 것입니다. 다음은 간단한 예입니다.

// 多维数组
$data = array(
    array(
        'name' => '张三',
        'age' => 18,
        'sex' => 'male',
        'hobby' => array('swimming', 'reading', 'music'),
    ),
    array(
        'name' => '李四',
        'age' => 22,
        'sex' => 'female',
        'hobby' => array('swimming', 'dancing', 'shopping'),
    ),
);

// 过滤函数
function filter($item) {
    if (!is_array($item)) { 
        return trim($item); // 非数组的元素进行trim()处理
    } else { 
        return array_map('filter', $item); // 数组的元素递归调用filter()函数进行处理
    }
}

$new_data = array_map('filter', $data); // 过滤后的多维数组

위 예에서는 요소가 배열인지 판단하여 배열이 아닌 요소에 대해 PHP에서 제공하는 Trim() 함수를 호출하여 필터 함수 filter()를 정의합니다. 요소는 처리를 위해 자신을 재귀적으로 호출하고, 마지막으로 처리된 결과는 array_map() 함수를 통해 새 배열 $new_data에 저장됩니다.

2. 필터링 방법 array_walk_recursive

array_walk_recursive()는 PHP에서 제공하는 함수로, 다차원 배열의 각 요소에 사용자 정의 함수를 적용할 수 있습니다. 이 함수는 두 개의 매개변수를 받습니다. 첫 번째 매개변수는 두 번째 매개변수는 현재 요소의 키 이름입니다. 배열 데이터를 필터링하기 위해 이 함수를 사용하여 배열의 요소를 하나씩 재귀적으로 순회한 다음 필터링해야 하는 요소를 처리할 수 있습니다. 다음은 샘플 코드입니다.

// 多维数组
$data = array(
    array(
        'name' => '张三',
        'age' => 18,
        'sex' => 'male',
        'hobby' => array('swimming', 'reading', 'music'),
    ),
    array(
        'name' => '李四',
        'age' => 22,
        'sex' => 'female',
        'hobby' => array('swimming', 'dancing', 'shopping'),
    ),
);

// 过滤函数
function filter(&$value, $key) {
    if (is_string($value)) {
        $value = trim($value); // 对字符串类型进行trim()处理
    }
}

array_walk_recursive($data, 'filter'); // 过滤后的多维数组

위의 예에서는 두 개의 매개변수를 허용하는 콜백 함수 filter()를 정의했습니다. 첫 번째 매개변수 $value는 현재 요소의 값이고 두 번째 매개변수 $key는 현재 값. 요소의 키 이름입니다. is_string() 함수를 사용하여 현재 요소가 문자열 유형인지 확인하십시오. 그렇다면 처리를 위해 PHP에서 제공하는 Trim() 함수를 호출하십시오.

필터 함수가 정의된 후 array_walk_recursive() 함수를 호출하여 다차원 배열에 대한 순회 작업을 구현하고 각 요소를 콜백 함수에 전달하여 처리한 후 최종적으로 필터링된 결과를 얻습니다.

3. 필터링 방법 array_filter

array_filter()는 PHP에서 제공하는 함수로, 지정된 콜백 함수에 따라 주어진 배열을 필터링할 수 있습니다. 배열의 각 요소를 반복하고 콜백 함수를 각 요소에 적용합니다. 반환 값은 콜백 함수에서 TRUE로 평가되는 요소의 배열입니다.

다차원 배열을 필터링하려면 array_filter() 함수를 사용할 수 있습니다. 구체적인 방법은 다차원 배열의 요소를 순회하여 필터링 조건에 맞는 요소를 새 배열에 저장하는 것입니다. 다음은 간단한 예입니다.

// 多维数组
$data = array(
    array(
        'name' => '张三',
        'age' => 18,
        'sex' => 'male',
        'hobby' => array('swimming', 'reading', 'music'),
    ),
    array(
        'name' => '李四',
        'age' => 22,
        'sex' => 'female',
        'hobby' => array('swimming', 'dancing', 'shopping'),
    ),
);

// 过滤函数
function filter($item) {
    return (strlen($item['name']) > 2); // 过滤满足条件的元素
}

$new_data = array_filter($data, 'filter'); // 过滤后的多维数组

위 예에서는 필터링해야 하는 요소를 처리하는 데 사용되는 콜백 함수 filter()를 정의합니다. filter() 함수에서는 특정 조건(여기서는 'name'의 길이가 2보다 큼)을 충족하는 요소에 대해 TRUE를 반환하고, 그렇지 않으면 FALSE를 반환합니다. 필터 함수가 정의된 후 array_filter() 함수를 호출하고 필터링할 배열과 필터 함수를 전달하여 필터링된 결과를 얻습니다.

요약하자면, array_map(), array_walk_recursive() 및 array_filter()와 같은 함수를 포함하여 다양한 방법을 사용하여 다차원 배열을 필터링할 수 있습니다. 어떤 방법을 선택할지는 특정 애플리케이션 시나리오와 요구 사항에 따라 다릅니다.

위 내용은 PHP 다차원 배열 필터링 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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