IT story

배열 요소를 제거한 다음 배열을 다시 색인하는 방법?

hot-time 2020. 5. 8. 08:19
반응형

배열 요소를 제거한 다음 배열을 다시 색인하는 방법?


배열에 문제가 있습니다. 아래와 같이 수정하려는 배열이 하나 있습니다. 인덱스로 요소 (요소)를 제거한 다음 배열을 다시 인덱싱하고 싶습니다. 가능합니까?

$foo = array(

    'whatever', // [0]
    'foo', // [1]
    'bar' // [2]

);

$foo2 = array(

    'foo', // [0], before [1]
    'bar' // [1], before [2]

);

unset($foo[0]); // remove item at index 0
$foo2 = array_values($foo); // 'reindex' array

array_splice($array, 0, 1);

http://php.net/manual/en/function.array-splice.php


당신은 더 잘 사용 array_shift()합니다. 배열의 첫 번째 요소를 반환하고 배열에서 제거한 다음 배열을 다시 인덱싱합니다. 하나의 효율적인 방법으로


array_splice($array, array_search(array_value,$array),1);

Unset($array[0]); 

Sort($array); 

왜 이것이 다운 보트인지는 모르겠지만, 누군가 시도해보고 싶을 경우, 작동한다는 것을 알게 될 것입니다. 배열에서 정렬을 사용하면 배열의 키가 다시 할당됩니다. 유일한 단점은 값을 정렬한다는 것입니다. 키를 사용해도 키가 재 할당 array_values되므로 값이 정렬되는지 여부는 중요하지 않습니다.


시도해보십시오 :

$foo2 = array_slice($foo, 1);

를 사용 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 ()


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"
  }

참고 URL : https://stackoverflow.com/questions/5217721/how-to-remove-array-element-and-then-re-index-array

반응형