현재 위치: > 최신 기사 목록> end () 함수와 배열 포인터 간의 관계에 대한 설명

end () 함수와 배열 포인터 간의 관계에 대한 설명

M66 2025-06-02

PHP에서 배열을 처리 할 때, 우리는 종종 현재 () , next () , reset () , key ()end () 와 같은 내부 배열 포인터를 작동하는 일련의 함수를 사용합니다. 이러한 기능은 단순 해 보일 수 있지만 데이터 구조를 반복 할 때의 성능은 종종 쉽게 간과되거나 오해됩니다. 이 기사는 end () 함수에 중점을두고 다른 포인터 함수와의 기능, 일반적인 사용법, 예방 조치 및 관계를 깊이 분석합니다.

1. end ()의 기본 사용

end ()는 배열의 마지막 요소에 대한 내부 배열 포인터를 가리키고 해당 요소의 값을 반환하는 함수입니다. 구문은 매우 간단합니다.

 mixed end(array &$array)

여기의 매개 변수는 참조 ( & $ array )이며, end ()가 배열의 내부 포인터 상태에 직접 영향을 미칠 것임을 나타냅니다.

예:

 $arr = [1, 2, 3, 4];
$last = end($arr);
echo $last; // 산출 4

이 코드에서 End ($ ARR)는 배열의 내부 포인터를 마지막 요소 4 로 이동하여 반환합니다.

2. 내부 포인터는 무엇입니까?

PHP의 배열은 단순히 키 값 쌍의 모음 일뿐 만 아니라 Foreach가 명시 적으로 사용되지 않을 때 현재 요소의 위치를 ​​추적하기위한 "내부 포인터"를 유지합니다. end () 의 핵심 함수는이 내부 포인터를 배열의 마지막 요소에 가리키는 것입니다.

실제로, 우리는 종종 다음을 수행합니다.

 $arr = ['a' => 100, 'b' => 200, 'c' => 300];

echo current($arr); // 100
next($arr);
echo current($arr); // 200
end($arr);
echo current($arr); // 300

end ()가 포인터 위치를 변경하고 이후에 current () 로의 호출이 마지막 요소를 가리키게됩니다.

3. Reset (), next () 및 prev ()와의 비교

end ()를 더 잘 이해하기 위해 포인터를 작동시키는 몇 가지 다른 기능과 비교합니다.

기능 효과
재설정 ($ arr) 포인터를 첫 번째 요소로 이동하십시오
끝 ($ arr) 포인터를 마지막 요소로 이동하십시오
다음 ($ arr) 포인터를 하나로 앞으로 움직입니다
이전 ($ arr) 포인터를 하나씩 움직입니다
현재 ($ arr) 현재 포인터로 가리키는 요소를 가져옵니다
키 ($ arr) 현재 포인터가 가리키는 요소의 키 이름을 얻으십시오.

이러한 기능을 이해함으로써 Foreach 에 의존하는 것이 아니라 배열의 트래버스 프로세스를 유연하게 제어 할 수 있습니다.

4. end ()의 실제 응용 시나리오

1. 배열의 마지막 요소를 얻으십시오

이것은 가장 일반적인 사용입니다.

 $data = ['first', 'second', 'third'];
$lastItem = end($data);
echo $lastItem; // third

2. 배열의 마지막 항목이 특정 조건을 충족하는지 결정

 $comments = [
    ['id' => 1, 'user' => 'Tom'],
    ['id' => 2, 'user' => 'Jerry']
];

$last = end($comments);
if ($last['user'] === 'Jerry') {
    echo "마지막 댓글은 Jerry";
}

3. Key ()를 사용하여 마지막 키 이름을 얻으십시오

 $mapping = ['a' => 1, 'b' => 2, 'c' => 3];
end($mapping);
$lastKey = key($mapping);
echo $lastKey; // 산출 c

4. 페이징 데이터를 처리 할 때 마지막 페이지의 URL을 얻습니다.

 $pages = [
    'https://m66.net/page/1',
    'https://m66.net/page/2',
    'https://m66.net/page/3'
];

$lastPageUrl = end($pages);
echo $lastPageUrl; // https://m66.net/page/3

5. end ()를 사용할 때주의를 기울여야하는 문제

1. 참조를 전달하면 포인터가 변경되었음을 의미합니다.

Reset () 없이 동일한 배열에서 End ()Next () 작업을 여러 번 수행 한 경우, 특히 루프에서 배열 변수를 다중화 할 때 현재 포인터 위치가 예상되지 않을 수 있습니다.

2. 빈 배열에서 콜드 end ()가 거짓으로 반환됩니다.

 $empty = [];
var_dump(end($empty)); // bool(false)

이 동작은 유형을 판단 할 때 문제를 일으킬 수 있습니다. 특히 배열 요소 값과 혼동 하기 를 원하지 않을 때는 === 유형을 판단하려면 사용해야합니다.

3. 배열 값이 False 일 때주의하십시오

 $arr = [true, false];
$last = end($arr);
if ($last == false) {
    echo "마지막 가치는입니다 false 또는 존재하지 않습니다";
}

위의 글쓰기 방법은 오류가 발생하기 쉬우 며 합동 판단을 사용해야합니다.

 if ($last === false) {
    echo "정말입니다 false,무가치하지 않습니다";
}

6. 모범 사례

  • end ()를 사용하기 전에 현재 배열 포인터의 위치를 ​​알고 필요한 경우 reset ()을 호출하십시오.

  • Foreach 의 배열에서 end ()를 호출하지 않으면 예상치 못한 부작용이 발생할 수 있습니다.

  • 포인터에 영향을 미치지 않고 마지막 값을 얻고 싶습니까? Array_Values ​​() 또는 Array_key_last ()를 사용하여 처리와 협력 할 수 있습니다.

 $last = array_values($arr)[count($arr) - 1];

또는:

 $lastKey = array_key_last($arr);
$last = $arr[$lastKey];

결론

end () 함수는 작지만 PHP 배열 작업에서 중요한 역할을합니다. 마스터하면 배열의 반복 논리를보다 효율적으로 제어하고보다 유연하고 강력한 코드를 작성할 수 있습니다. 이 기사가 end () 의 본질과 사용을 완전히 이해하는 데 도움이되기를 바랍니다.