복붙노트

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

PHP

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

배열에 문제가 있습니다. 나는 아래와 같이 수정할 어레이를 하나 가지고있다. 나는 그것의 요소 (요소)를 색인으로 제거한 다음 배열을 다시 색인화하려고합니다. 가능한가?

$foo = array(

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

);

$foo2 = array(

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

);

해결법

  1. ==============================

    1.

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

    2.

    array_splice($array, 0, 1);
    

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

  3. ==============================

    3.array_shift ()를 사용하는 것이 좋습니다. 그러면 배열의 첫 번째 요소가 반환되고 배열에서 제거되고 배열의 색인이 다시 생성됩니다. 하나의 효율적인 방법으로 모두.

    array_shift ()를 사용하는 것이 좋습니다. 그러면 배열의 첫 번째 요소가 반환되고 배열에서 제거되고 배열의 색인이 다시 생성됩니다. 하나의 효율적인 방법으로 모두.

  4. ==============================

    4.

    array_splice($array, array_search(array_value,$array),1);
    
  5. ==============================

    5.함께 시도해보십시오.

    함께 시도해보십시오.

    $foo2 = array_slice($foo, 1);
    
  6. ==============================

    6.

    Unset($array[0]); 
    
    Sort($array); 
    

    나는 이것이 왜 downvoted되고 있는지 모르겠지만 누군가가 그것을 시도하는 것을 귀찮게한다면, 당신은 그것이 작동한다는 것을 알아 차릴 것이다. 배열에서 정렬을 사용하면 배열의 키를 다시 할당합니다. 유일한 단점은 값을 정렬하는 것입니다. array_values를 사용하는 경우에도 키가 재 할당되므로 분명히 값이 정렬되는지 여부는 중요하지 않습니다.

  7. ==============================

    7.array_merge를 사용하면 키를 다시 색인화합니다. 수동 상태 :

    array_merge를 사용하면 키를 다시 색인화합니다. 수동 상태 :

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

    이것이 내가 원래의 답을 찾은 곳입니다.

    http://board.phpbuilder.com/showthread.php?10299961-Reset-index-on-array-after-unset()

  8. ==============================

    8.xzyfer의 대답 외에도

    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"
      }
    
  9. from https://stackoverflow.com/questions/5217721/how-to-remove-array-element-and-then-re-index-array by cc-by-sa and MIT license