>  기사  >  백엔드 개발  >  PHP 배열을 분할하는 방법

PHP 배열을 분할하는 방법

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼원래의
2019-09-28 13:17:123479검색

PHP 배열을 분할하는 방법

array_slice 및 array_splice 함수는 배열의 슬라이스를 꺼내는 데 사용됩니다. array_splice에는 원래 삭제된 슬라이스의 위치를 ​​새 슬라이스로 바꾸는 기능도 있습니다. javascript의 Array.prototype.splice 및 Array.prototype.slice 메소드와 유사합니다.

array_slice

array array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = false ]] )

배열에서 지정된 첨자 오프셋과 길이 길이의 하위 배열 슬라이스를 반환합니다.

매개변수 설명

첫 번째 매개변수 배열의 길이가 num_in이라고 가정합니다.

offset

오프셋이 양수이고 길이보다 작으면 반환된 배열은 오프셋에서 시작됩니다. 오프셋이 길이보다 크면 아무 작업도 수행되지 않고 직접 반환됩니다. offset이 음수이면 offset = num_in+offset이고, num_in+offset == 0이면 offset은 0으로 설정됩니다.

length

길이가 0보다 작으면 길이는 num_in - 오프셋 + 길이로 변환됩니다. 그렇지 않으면 오프셋+길이 > array_count이면 길이 = num_in - 오프셋입니다. 처리 후에도 길이가 여전히 0보다 작으면 직접 반환됩니다.

preserve_keys

기본값은 false입니다. 기본적으로 숫자 키 값의 원래 순서는 유지되지 않습니다. true로 설정하면 배열의 원래 숫자 키 값 순서가 유지됩니다.

관련 권장 사항 : "php array"

usage examples

r
<?php
$input = array("a", "b", "c", "d", "e");
 
$output = array_slice($input, 2);   // returns "c", "d", and "e"
$output = array_slice($input, -2, 1); // returns "d"
$output = array_slice($input, 0, 3);  // returns "a", "b", and "c"
 
print_r(array_slice($input, 2, -1)); // array(0 => &#39;c&#39;, 1 => &#39;d&#39;);
print_r(array_slice($input, 2, -1, true)); // array(2 => &#39;c&#39;, 1 => &#39;d&#39;);

running steps

·

오프셋, 길이 · PHP 배열을 분할하는 방법 오프셋에 의해 가리키는 위치에 대한 포인터

·오프셋부터 시작하여 길이 요소를 반환 배열에 복사합니다.

작업 흐름도는 다음과 같습니다.

array_splice


array array_splice(array &$input,int $offset[, int $length = 0 [, mixed $replacement = array() ]])

입력에 오프셋부터 시작하는 길이 요소를 삭제합니다. 교체 매개변수인 경우 삭제된 요소로 교체합니다.

매개변수 설명

array_splice 함수의 오프셋 및 길이 매개변수는 array_slice 함수와 동일하게 사용됩니다.

replacement

이 매개변수가 설정되면 함수는 교체를 위해 교체 배열을 사용합니다.

오프셋과 길이가 제거할 요소가 없도록 지정하는 경우 대체 항목이 오프셋 위치에 삽입됩니다. 교체 요소가 하나만 있는 경우 array()로 래핑할 필요가 없습니다.

사용 예

<?php
$input = array("red", "green", "blue", "yellow");
array_splice($input, 2);
// $input变为 array("red", "green")
 
$input = array("red", "green", "blue", "yellow");
array_splice($input, 1, -1);
// $input变为 array("red", "yellow")
 
$input = array("red", "green", "blue", "yellow");
array_splice($input, 1, count($input), "orange");
// $input变为 array("red", "orange")
 
$input = array("red", "green", "blue", "yellow");
array_splice($input, -1, 1, array("black", "maroon"));
// $input为 array("red", "green",
//     "blue", "black", "maroon")
 
$input = array("red", "green", "blue", "yellow");
array_splice($input, 3, 0, "purple");
// $input为 array("red", "green",
//     "blue", "purple", "yellow");

소스 코드 해석

array_splice에는 다음과 같은 코드가 있습니다.

/* Don&#39;t create the array of removed elements if it&#39;s not going
  * to be used; e.g. only removing and/or replacing elements */
 if (return_value_used) { // 如果有用到函数返回值则创建返回数组,否则不创建返回数组
   int size = length;
 
   /* Clamp the offset.. */
   if (offset > num_in) {
     offset = num_in;
   } else if (offset < 0 && (offset = (num_in + offset)) < 0) {
     offset = 0;
   }
 
   /* ..and the length */
   if (length < 0) {
     size = num_in - offset + length;
   } else if (((unsigned long) offset + (unsigned long) length) > (unsigned) num_in)     {
     size = num_in - offset;
   }
 
   /* Initialize return value */
   array_init_size(return_value, size > 0 ? size : 0);
   rem_hash = &Z_ARRVAL_P(return_value);
 }
🎜array_splice 함수는 삭제된 슬라이스를 반환합니다. 이 코드의 의미는 array_splice가 값을 반환해야 하는 경우 반환 배열을 생성하고, 그렇지 않으면 공간 낭비를 피하기 위해 생성하지 않는다는 것입니다. 이것은 또한 약간의 프로그래밍 트릭이므로 필요할 때만 반환됩니다. 예를 들어, $result = array_splice(...)가 함수에 사용되면 return_value_used는 true입니다. 🎜🎜🎜요약🎜🎜🎜 일상 프로그래밍에서는 이 두 함수를 구현할 때처럼 가장 특수한 상황을 먼저 처리한 다음 계속해서 중복 판단을 피해야 합니다. 새 변수를 저장해야 할 때 새 공간을 확보해야 합니다. 그렇지 않으면 낭비가 발생합니다. 🎜

위 내용은 PHP 배열을 분할하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.