답변:
unset($foo[0]); // remove item at index 0
$foo2 = array_values($foo); // 'reindex' array
unset($foo[0], $foo[3], $bar[1]);
array_splice
하고 있었고, 0과 1 인덱스에서는 작동하지 않았다.
당신은 더 잘 사용 array_shift()
합니다. 배열의 첫 번째 요소를 반환하고 배열에서 제거한 다음 배열을 다시 인덱싱합니다. 하나의 효율적인 방법으로
array_pop()
는 필요한 경우 마지막 배열 요소를 검색하고 제거합니다. 그러나 배열 중간에있는 요소에 대해 어떤 기능도 수행 할 수는 없습니다.
Unset($array[0]);
Sort($array);
왜 이것이 다운 보트인지는 모르겠지만, 누군가 시도해보고 싶을 경우, 작동한다는 것을 알게 될 것입니다. 배열에서 정렬을 사용하면 배열의 키가 다시 할당됩니다. 유일한 단점은 값을 정렬한다는 것입니다. 키를 사용해도 키가 재 할당 array_values
되므로 값이 정렬되는지 여부는 중요하지 않습니다.
xzyfer의 답변 외에도
함수
function custom_unset(&$array=array(), $key=0) {
if(isset($array[$key])){
// remove item at index
unset($array[$key]);
// 'reindex' array
$array = array_values($array);
//alternatively
//$array = array_merge($array);
}
return $array;
}
사용하다
$my_array=array(
0=>'test0',
1=>'test1',
2=>'test2'
);
custom_unset($my_array, 1);
결과
array(2) {
[0]=>
string(5) "test0"
[1]=>
string(5) "test2"
}
를 사용 array_merge
하면 키가 다시 색인됩니다. 수동 상태 :
숫자 배열이있는 입력 배열의 값은 결과 배열에서 0부터 시작하는 증분 키로 번호가 다시 매겨집니다.
http://php.net/manual/en/function.array-merge.php
이것은 내가 원래의 대답을 찾은 곳입니다.
http://board.phpbuilder.com/showthread.php?10299961-Reset-index-on-array-after-unset ()