PHP에서 배열을 처리 할 때, 우리는 종종 현재 () , next () , reset () , key () 및 end () 와 같은 내부 배열 포인터를 작동하는 일련의 함수를 사용합니다. 이러한 기능은 단순 해 보일 수 있지만 데이터 구조를 반복 할 때의 성능은 종종 쉽게 간과되거나 오해됩니다. 이 기사는 end () 함수에 중점을두고 다른 포인터 함수와의 기능, 일반적인 사용법, 예방 조치 및 관계를 깊이 분석합니다.
end ()는 배열의 마지막 요소에 대한 내부 배열 포인터를 가리키고 해당 요소의 값을 반환하는 함수입니다. 구문은 매우 간단합니다.
mixed end(array &$array)
여기의 매개 변수는 참조 ( & $ array )이며, end ()가 배열의 내부 포인터 상태에 직접 영향을 미칠 것임을 나타냅니다.
$arr = [1, 2, 3, 4];
$last = end($arr);
echo $last; // 산출 4
이 코드에서 End ($ ARR)는 배열의 내부 포인터를 마지막 요소 4 로 이동하여 반환합니다.
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 () 로의 호출이 마지막 요소를 가리키게됩니다.
end ()를 더 잘 이해하기 위해 포인터를 작동시키는 몇 가지 다른 기능과 비교합니다.
기능 | 효과 |
---|---|
재설정 ($ arr) | 포인터를 첫 번째 요소로 이동하십시오 |
끝 ($ arr) | 포인터를 마지막 요소로 이동하십시오 |
다음 ($ arr) | 포인터를 하나로 앞으로 움직입니다 |
이전 ($ arr) | 포인터를 하나씩 움직입니다 |
현재 ($ arr) | 현재 포인터로 가리키는 요소를 가져옵니다 |
키 ($ arr) | 현재 포인터가 가리키는 요소의 키 이름을 얻으십시오. |
이러한 기능을 이해함으로써 Foreach 에 의존하는 것이 아니라 배열의 트래버스 프로세스를 유연하게 제어 할 수 있습니다.
이것은 가장 일반적인 사용입니다.
$data = ['first', 'second', 'third'];
$lastItem = end($data);
echo $lastItem; // third
$comments = [
['id' => 1, 'user' => 'Tom'],
['id' => 2, 'user' => 'Jerry']
];
$last = end($comments);
if ($last['user'] === 'Jerry') {
echo "마지막 댓글은 Jerry";
}
$mapping = ['a' => 1, 'b' => 2, 'c' => 3];
end($mapping);
$lastKey = key($mapping);
echo $lastKey; // 산출 c
$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
Reset () 없이 동일한 배열에서 End () 및 Next () 작업을 여러 번 수행 한 경우, 특히 루프에서 배열 변수를 다중화 할 때 현재 포인터 위치가 예상되지 않을 수 있습니다.
$empty = [];
var_dump(end($empty)); // bool(false)
이 동작은 유형을 판단 할 때 문제를 일으킬 수 있습니다. 특히 배열 요소 값과 혼동 하기 를 원하지 않을 때는 === 유형을 판단하려면 사용해야합니다.
$arr = [true, false];
$last = end($arr);
if ($last == false) {
echo "마지막 가치는입니다 false 또는 존재하지 않습니다";
}
위의 글쓰기 방법은 오류가 발생하기 쉬우 며 합동 판단을 사용해야합니다.
if ($last === false) {
echo "정말입니다 false,무가치하지 않습니다";
}
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 () 의 본질과 사용을 완전히 이해하는 데 도움이되기를 바랍니다.