현재 위치: > 최신 기사 목록> null을 is_iterable로 전달하면 False가 반환됩니다. 후속 오류를 피하는 방법은 무엇입니까?

null을 is_iterable로 전달하면 False가 반환됩니다. 후속 오류를 피하는 방법은 무엇입니까?

M66 2025-06-22

PHP에서 IS_ITERABLE ()는 변수가 트래버스 가능한 데이터 유형인지 확인하는 기능입니다. Foreach 루프에서 변수를 사용할 수 있는지 여부를 결정하는 데 도움이 될 수 있습니다. 이 함수는 변수가 트래버 가능한 인터페이스를 구현하는 배열 또는 객체 인 경우 true를 반환합니다. 변수가 null 인 경우, is_iterable ()는 false를 반환하여, 특히 트래버스 가능한 물체를 전달할 것으로 예상되는 경우 잠재적 오류가 발생할 수 있습니다. 그렇다면 Null 을 통과시켜 오류를 피하는 방법은 무엇입니까?

문제 분석

다음 코드 예제를 고려하십시오.

 $data = null;

if (is_iterable($data)) {
    foreach ($data as $item) {
        // 거래하십시오 $item
    }
}

이 예에서 $ data는 null , is_iterable ($ data) 이 false를 반환하므로 Foreach 루프가 실행되지 않습니다. 그러나 이것은 당신이하고 싶은 행동이 아닐 수도 있습니다. $ Data가 NULL 인 경우 추가 처리로 후속 오류 나 예외를 피할 수 있습니다.

해결책

is_iterable ()를 사용할 때 값으로 인해 불필요한 오류를 피하기 위해 판단 전에 변수의 전처리를 수행 할 수 있습니다. 다음은이를 처리하는 몇 가지 일반적인 방법입니다.

1. 추가 점검을 위해 is_null ()을 사용하십시오

트래버스가 가능한 물체인지 확인하기 전에 변수가 먼저 널을 확인할 수 있습니다. NULL 이면 Foreach를 직접 건너 뛰거나 대체 로직을 실행하십시오.

 $data = null;

if (!is_null($data) && is_iterable($data)) {
    foreach ($data as $item) {
        // 거래하십시오 $item
    }
} else {
    // 만약에 $data 예 null,进行备用거래하십시오
    echo "数据为空或不예可遍历对象。";
}

2. 기본값을 제공합니다

NULL 이 가능한 입력이고 빈 배열로 처리되기를 원한다면 빈 배열을 기본 값으로 사용할 수 있습니다. 이런 식으로 데이터null 이라도 프로그램은 오류를보고하지 않으며 Foreach 루프는 빈 배열을 처리합니다.

 $data = null;

// 만약에 $data 예 null,대신 빈 배열을 사용하십시오
$data = $data ?? [];

foreach ($data as $item) {
    // 거래하십시오 $item
}

3. NULL 대신 빈 컬렉션을 사용하십시오

응용 프로그램에서 NULL 값으로 NULL을 종종 만나면 NULL 대신 논리에 빈 세트를 사용하는 것을 고려하십시오. 예를 들어, 빈 배열 또는 빈 개체를 사용하여 데이터가없는 상태를 나타냅니다.

 $data = null;

// 빈 배열을 대안으로 사용하십시오
$data = is_null($data) ? [] : $data;

foreach ($data as $item) {
    // 거래하십시오 $item
}

4. 캡슐화를위한 함수를 만듭니다

검사 기능을 캡슐화하여 변수가 비어 있는지에 대한 논리를 중앙에서 처리하여 코드에서보다 간결하게 재사용 할 수 있습니다.

 function safe_iterable($var) {
    return (is_iterable($var) && $var !== null) ? $var : [];
}

$data = null;

foreach (safe_iterable($data) as $item) {
    // 거래하십시오 $item
}

요약

IS_ITERABLE ()는 변수를 가로 질 수 있는지 판단 할 false를 반환합니다 . NULL 로 인한 후속 오류를 피하기 위해 IS_ITERABLE ()을 사용하기 전에 확인하거나 기본적으로 또는 빈 세트로 NULL을 처리 할 수 ​​있습니다. 올바른 전략을 선택하는 것은 프로젝트의 요구와 비즈니스 논리에 따라 다릅니다.

또한, 들어오는 데이터를 처리 할 때, 특히 외부 데이터 소스가 불안정 할 때, 많은 잠재적 런타임 오류를 피하는 데 도움이 될 것입니다.