>  기사  >  백엔드 개발  >  PHP의 2차원 배열에서 빈 배열을 지우는 방법

PHP의 2차원 배열에서 빈 배열을 지우는 방법

PHPz
PHPz원래의
2023-04-19 09:15:49781검색

PHP 배열 작업에서 배열에 null 값이 자주 발생하는데, 이는 일반적으로 후속 데이터 처리 작업에 영향을 미치므로 배열에 있는 null 값(빈 문자열, false, null 등)을 지워야 합니다. 이 기사에서는 2차원 배열에서 빈 배열을 지우는 방법을 소개합니다.

PHP에서는 array_filter 함수를 사용하여 배열의 빈 값을 지울 수 있습니다. 이 함수는 두 개의 매개변수를 받을 수 있습니다. 첫 번째 매개변수는 필터링할 배열을 나타내고 두 번째 매개변수는 사용할 콜백 함수를 나타냅니다. 콜백 함수는 필터링할 값을 지정할 수 있습니다. 예를 들어, 빈 문자열과 false를 필터링하려면 다음과 같이 콜백 함수를 정의할 수 있습니다.

function my_callback($value){
    return $value !== '' && $value !== false;
}

여기서 $value는 배열의 각 요소를 나타냅니다. !== 연산자를 사용하여 조건이 만족되는지 확인합니다. 그런 다음 array_filter 함수를 사용하여 배열을 필터링합니다.

$arr = array('a', '', 'b', false, null);
$new_arr = array_filter($arr, 'my_callback');
print_r($new_arr);

출력 결과는 다음과 같습니다.

Array
(
    [0] => a
    [2] => b
)

보시다시피 빈 문자열과 false는 필터링됩니다. 하지만 2차원 배열을 다룰 때는 상황이 좀 더 복잡해집니다.

다음 2D 배열을 고려해보세요.

$arr = array(
    array('a', '', 'b'),
    array('c', false, null),
    array('', 'd', 'e')
);

우리의 목표는 빈 배열을 지우는 것입니다. array_filter 함수를 사용하면 필터 조건을 다음 형식으로 작성할 수 있습니다.

function my_callback($row){
    return array_filter($row, function($value){
        return $value !== '' && $value !== false;
    });
}

여기서 $row는 2차원 배열의 각 행을 나타내고, array_filter를 사용하여 각 행의 요소를 필터링한 후 결과를 반환합니다.

그런 다음 array_map 함수를 사용하여 이 콜백 함수를 2차원 배열의 각 행에 적용할 수 있습니다.

$new_arr = array_map('my_callback', $arr);
print_r($new_arr);

출력 결과는 다음과 같습니다.

Array
(
    [0] => Array
        (
            [0] => a
            [2] => b
        )

    [1] => Array
        (
            [0] => c
        )

    [2] => Array
        (
            [1] => d
            [2] => e
        )

)

보시다시피 빈 배열이 지워졌습니다. array_map 함수를 사용하여 반환된 결과는 여전히 2차원 배열이며, 각 행에 포함된 요소 수가 다를 수 있으므로 array_values ​​함수를 사용하여 배열을 다시 인덱싱해야 할 수도 있습니다.

$new_arr = array_map('my_callback', $arr);
$new_arr = array_map('array_values', $new_arr);
print_r($new_arr);

출력 결과는 다음과 같습니다.

Array
(
    [0] => Array
        (
            [0] => a
            [1] => b
        )

    [1] => Array
        (
            [0] => c
        )

    [2] => Array
        (
            [0] => d
            [1] => e
        )

)

배열의 색인이 다시 생성된 것을 확인할 수 있습니다.

요약하자면, array_filter와 array_map 함수를 결합하여 2차원 배열에서 빈 배열을 지울 수 있습니다. 하나는 요소 필터링을 위한 함수이고 다른 하나는 필터링된 배열을 다시 인덱싱하는 함수입니다. 이 방법의 장점은 간단하고 이해하기 쉽다는 점이지만, 코드가 상대적으로 길다는 단점이 있습니다. 빈번한 배열 작업이 필요한 프로그램의 경우 보다 효율적인 알고리즘 사용을 고려할 수 있습니다.

위 내용은 PHP의 2차원 배열에서 빈 배열을 지우는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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