PHP 배열 중간에 요소를 배치하는 쉬운 방법은 무엇입니까?
문제
10개의 요소로 구성된 인덱스 배열이 있고 중간에 요소를 배치하려고 한다고 가정해 보겠습니다(예: 인덱스 3).그런 다음 배열의 나머지 부분을 이동하여 11개 요소 길이가 되도록 하고 싶습니다.이 작업을 수행하는 쉬운 방법이 있나요?
없어서 놀랐다 put()
기능이든 뭐든.
나는 다음의 조합으로 이 작업을 수행하는 것이 충분히 쉬울 것이라는 것을 알고 있습니다. array_splice
그리고 array_merge
하지만 더 쉬운 방법이 있는지 궁금합니다.
해결책
$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
)
위치가 배열보다 크거나 삽입이 배열이 아닌 경우 검사를 추가할 수 있습니다.
제휴하지 않습니다 StackOverflow