PHP 배열 중간에 요소를 배치하는 쉬운 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/620709

  •  05-07-2019
  •  | 
  •  

문제

10개의 요소로 구성된 인덱스 배열이 있고 중간에 요소를 배치하려고 한다고 가정해 보겠습니다(예: 인덱스 3).그런 다음 배열의 나머지 부분을 이동하여 11개 요소 길이가 되도록 하고 싶습니다.이 작업을 수행하는 쉬운 방법이 있나요?

없어서 놀랐다 put() 기능이든 뭐든.

나는 다음의 조합으로 이 작업을 수행하는 것이 충분히 쉬울 것이라는 것을 알고 있습니다. array_splice 그리고 array_merge 하지만 더 쉬운 방법이 있는지 궁금합니다.

도움이 되었습니까?

해결책

Array_Splice () 가이 작업을 수행합니다

$input = array("red", "green", "blue", "yellow");
array_splice($input, 3, 0, "purple");
// $input is now array("red", "green", "blue", "purple", "yellow");

다른 팁

불행히도 가장 좋은 방법은 게시물에 설명한 것입니다.

Array_Splice ()를 사용하는 경우 PHP는 여전히 배열의 절반을 삽입하여 삽입해야합니다. 이는 큰 배열 크기의 성능이 적용됩니다. 대신 목록이나 트리 데이터 구조를 사용해야할까요?

배열 중간에 삽입해야 할 유일한 시간은 삽입 정렬과 실질적으로 유사한 작업을 수행 할 때였습니다. 어쩌면 분류되지 않은 항목을 배열에 저장 한 다음 모든 것을 추가하면 정렬할까요?

현재 어떤 PHP 함수도 이를 처리할 수 없습니다.그러나 스스로 채찍질하는 것은 그리 어렵지 않습니다.

function array_insert(&$array, $insert, $position) {
    $c = count($array);
    $slice = array_merge($insert, array_slice($array, $position));
    array_splice($array, $position, $c, $slice);
}

$array = array('a','b','d','e');
print_r($array);
array_insert($array, array('c'), 2);
print_r($array);

결과는 다음과 같습니다.

Array
(
    [0] => a
    [1] => b
    [2] => d
    [3] => e
)
Array
(
    [0] => a
    [1] => b
    [2] => c
    [3] => d
    [4] => e
)

위치가 배열보다 크거나 삽입이 배열이 아닌 경우 검사를 추가할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top