현재 위치: > 최신 기사 목록> php current ()가 빈 배열에서 null을 반환하는 이유는 무엇입니까? 그에 대한 이유 분석

php current ()가 빈 배열에서 null을 반환하는 이유는 무엇입니까? 그에 대한 이유 분석

gitbox 2025-08-26

1. 현재 () 의 작동 방식

current ()는 배열의 첫 번째 요소를 단순히 얻는 함수가 아닙니다.
각 PHP 배열은 하단에 포인터를 유지하여 "현재 요소"를 가리키며. Current () 의 목적은 포인터가 가리키는 값을 반환하는 것입니다.

  • 포인터가 유효한 요소를 가리키면 current ()는 해당 요소의 값을 반환합니다.

  • 배열이 비어 있거나 포인터가 배열 범위를 초과하면 컨텍스트에 따라 False 또는 Null이 반환됩니다.

빈 배열의 경우 포인터가 전혀 가리키는 요소가 없으므로 리턴 값은 자연스럽게 입니다.


2. 왜 거짓이 아니라 널이 아닌가?

많은 사람들 이이 질문을 가지고 있습니다. 배열에는 가치가 없으므로 "실패"를 표시하기 위해 False를 반환하지 않겠습니까?
그 이유는 : PHP 디자이너는 "기능 실행 실패"와 "실제로 배열에는 요소가 없다"는 것을 구별하기를 원하기 때문입니다.

  • 거짓은 일반적으로 "오류"또는 "실패"를 의미합니다.

  • 더 적절 하게 "여기에 가치 없음"을 더 적절하게 표현합니다.

따라서 빈 배열로 current ()을 호출하고 null을 반환하는 것이 더 합리적인 선택입니다.


3. Reset ()다음 () 와의 관계

더 잘 이해하기 위해 여러 배열 포인터 관련 기능을 비교할 수 있습니다.

 <span><span><span class="hljs-variable">$arr</span></span><span> = [</span><span><span class="hljs-number">100</span></span><span>, </span><span><span class="hljs-number">200</span></span><span>];

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">current</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>); </span><span><span class="hljs-comment">// 100</span></span><span>
</span><span><span class="hljs-title function_ invoke__">next</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">current</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>); </span><span><span class="hljs-comment">// 200</span></span><span>
</span><span><span class="hljs-title function_ invoke__">next</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-title function_ invoke__">current</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>)); </span><span><span class="hljs-comment">// bool(false),포인터가 경계를 가로 지르기 때문입니다</span></span><span>
</span></span>

여기서 배열 포인터가 바운드를 벗어나면 current ()는 false를 반환합니다.
빈 배열에는 포인터가 없으므로 NULL이 직접 반환됩니다. 이 두 상황은 실제로 의미에서 다릅니다.

  • 빈 배열 : 뾰족한 요소 없음 → null

  • 비어 있지 않은 배열이지만 경계를 벗어난 : 포인터 실패 → 거짓


4. 그것을 사용하는 데주의를 기울이십시오

개발자가 Current ()를 사용하면 NULLFALSE 의 차이에 특별한주의를 기울여야합니다. if (current ($ arr))를 판단하기 위해 직접 사용하는 경우 NullFalse가 부울 컨텍스트에서 잘못된 값으로 취급되기 때문에 모호성 일 수 있습니다.

더 안전한 접근법은 키 ()를 사용하여 판단을 돕는 것입니다.

 <span><span><span class="hljs-variable">$arr</span></span><span> = [];

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">key</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>) !== </span><span><span class="hljs-literal">null</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">current</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>);
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"배열이 비어 있거나 포인터가 유효하지 않습니다"</span></span><span>;
}
</span></span>

이를 통해 다양한 시나리오를보다 정확하게 구별 할 수 있습니다.

  • 관련 태그:

    NULL