이러한 문제가 있습니다. 배열 대기열에서는 배열 길이가 고정되어 있습니다. 입력에 요소를 삽입할 때 최대 길이를 초과하면 배열이 자동으로 덮어쓰기 및 채우기를 시작합니다.
이때, 배열 전체가 링을 형성합니다. 아래 그림과 같습니다.
// 배열 정의
$test_array = array();
function push_array($value, &$ test_array) {
if (count($test_array) < 12) {
// 배열이 지정된 길이보다 작을 때 요소를 직접 추가
$test_array [] = $value;
} else {
// 배열이 지정된 길이보다 큰 경우 각각을 사용하여 현재 포인터의 요소를 꺼내고 포인터를 아래로 이동합니다
list($k, $v) = Each($test_array);
// 일반적으로 모듈로 알고리즘을 사용하여 덮어쓸 키를 얻은 후 직접 덮어씁니다
$k = $k % 12;
$test_array[$k] = $value;
}
}
push_array(0,$test_array);
push_array (1,$test_array);
push_array(2,$test_array);
push_array(3,$test_array);
push_array(4,$test_array);
push_array(5,$test_array) ;
push_array(6,$test_array) ;
push_array(7,$test_array);
push_array(8,$test_array);
push_array(9,$test_array);
push_array( 10,$test_array);
push_array( 11,$test_array);
push_array(12,$test_array);
push_array(13,$test_array);
push_array(14,$test_array);
push_array(15,$test_array);
push_array(16,$test_array);
push_array(17,$test_array);
push_array(18,$test_array);
push_array(19 ,$test_array);
push_array(20 ,$test_array);
push_array(21,$test_array);
push_array(22,$test_array);
push_array(23,$test_array);
push_array(24,$test_array);
var_dump($test_array);exit;
테스트 결과:
array(12) {
[0]=>
int(24)
[1]=>
int(13)
[2]=>
int(14)
[3]=>
int(15)
[4]=>
int(16)
[5]=>
int(17)
[6]=>
int(18)
[7]=>
int(19)
[8]=>
int(20)
[9]=>
int(21)
[10]=>
int(22)
[11]=>
int(23)
}
각각 외에도 다음 배열 포인터 함수도 사용하기 쉽습니다
- current() - 배열의 현재 요소 값을 반환합니다.
- end() - 내부 포인터를 배열의 마지막 요소로 설정합니다. 배열 및 출력
- next() - 내부 포인터가 배열의 다음 요소를 가리키고 출력
- prev() - 내부 포인터가 배열의 이전 요소를 가리킴
- reset() - 내부 포인터를 배열로 가리킵니다.
의 첫 번째 요소와 출력
위 내용을 포함하여 PHP 배열 포인터 연구 노트(1)를 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.