현재 위치: > 최신 기사 목록> end ()가 원래 배열의 순서를 변경합니까?

end ()가 원래 배열의 순서를 변경합니까?

M66 2025-06-02

PHP에서 배열을 조작 할 때는 종종 배열의 마지막 요소에 액세스해야합니다. end () 함수는이를 달성하기 쉬운 방법을 제공합니다. 그러나 일부 개발자는 end ()가 배열의 순서를 변경 할 것인지 아니면 실제 사용으로 배열에 부작용을 유발하는지 걱정합니다. 이 기사는 end () 의 동작을 자세히 분석하고 실제 사용에 대한 제안을 제공합니다.

1. end () 의 역할

end () 는 PHP의 내장 배열 함수로, 배열의 내부 포인터를 마지막 요소로 가리키고 해당 요소의 값을 반환합니다. 예를 들어:

 $array = ['a', 'b', 'c'];
$last = end($array);
echo $last; // 산출:c

2. end () 배열의 순서를 변경합니까?

대답은 다음과 같습니다.

end () 함수는 배열의 실제 순서를 변경하지 않으며 배열의 내부 포인터를 단순히 움직입니다 . PHP의 어레이 포인터 메커니즘은 current () , next () , reset () 및 기타 함수를 통해 제어 할 수있는 트래버스 보조 도구입니다. 이러한 작업은 배열의 키 값 요소 쌍에 영향을 미치지 않거나 스토리지 순서를 변경하지 않습니다.

다음 코드로이를 확인할 수 있습니다.

 $array = ['first' => 1, 'second' => 2, 'third' => 3];
end($array);

// 원래 배열을 인쇄하십시오
print_r($array);

출력은 여전히 ​​다음과 같습니다.

 Array
(
    [first] => 1
    [second] => 2
    [third] => 3
)

배열의 순서는 전혀 수정되지 않았습니다.

3. 실제 사용에서 주목해야 할 사항

end () 가 배열의 순서를 변경하지는 않지만 다음을 사용할 때 다음 사항을 기록해야합니다.

1. 변화는 "포인터 상태"입니다.

End ()가 호출되면 배열의 내부 포인터가 더 이상 첫 번째 요소를 가리 키지 않습니다. 다음 () 또는 다음 ()을 사용하여 다음에 트래버지 해야하는 경우 논리적 오류가 발생할 수 있습니다. 따라서 나중에 배열을 처음부터 횡단 해야하는 경우 Reset ()에게 전화하십시오.

 $array = [1, 2, 3];
$last = end($array);
// 처음으로 다시 포인트
reset($array);

2. 빈 배열에서 end ()를 사용하면 False가 반환됩니다.

배열을 처리하기 전에 배열이 비어 있는지 확인하는 것이 가장 좋습니다.

 $array = [];
$last = end($array);

if ($last === false && empty($array) === false) {
    // 배열은 비어 있지 않지만 마지막 값은 false
}

3. 참조로 전달 된 배열에서 end ()를 사용하면 배열의 내용이 변경되지 않습니다.

배열이 함수에 의해 참조 되더라도 end ()는 실제 컨텐츠를 수정하지 않으며 포인터에만 영향을 미칩니다.

 function getLastElement(&$arr) {
    return end($arr);
}

4. 실제 시나리오 예제

예를 들어, 특정 블로그 시스템 (도메인 이름은 M66.net )에서 특정 기사 분류 목록에서 마지막 범주를 가져와야 할 수도 있습니다.

 $categories = ['PHP', 'Laravel', '성능 최적화'];
$lastCategory = end($categories);

echo "<a href=\"https://m66.net/category/" . urlencode($lastCategory) . "\">마지막 범주</a>";

출력은 다음과 같습니다.