// 원본 배열
$array = ['a', 'b', 'c', 'd', 'e'];

/* array_slice() 함수를 사용하여
  원본 배열에서 인덱스 1부터 시작하여 3개의 요소를 잘라내어(slice) 추출한 결과를
  새로운 배열로 반환 */
$sliced_array = array_slice($array, 1, 3);

print_r($sliced_array);
/*
출력:
    Array
    (
		[0] => b
	    [1] => c
	    [2] => d
    )
*/
array_slice(
    array $array,
    int $offset,
    ?int $length = null,
    bool $preserve_keys = false
): array

/* array_slice(
    원본 배열,
    추출을 시작할 인덱스 위치[,
    추출할 요소의 수[,
    키를 유지할지 여부를 나타내는 불리언 값]]
   );
*/
$indexed_arr = ['가', '나', '다', '라', '마'];

print_r(array_slice($indexed_arr, 0)); // Array ( [0] => 가 [1] => 나 [2] => 다 [3] => 라 [4] => 마 )
print_r(array_slice($indexed_arr, 2)); // Array ( [0] => 다 [1] => 라 [2] => 마 )
print_r(array_slice($indexed_arr, 2, 1)); // Array ( [0] => 다 )
print_r(array_slice($indexed_arr, -2, 1)); // Array ( [0] => 라 )
print_r(array_slice($indexed_arr, 7)); // Array ( )

// 세 번째 매개변수에 따른 배열 키의 보존 여부 차이
print_r(array_slice($indexed_arr, 2, 2)); // Array ( [0] => 다 [1] => 라 )
print_r(array_slice($indexed_arr, 2, 2, true)); // Array ( [2] => 다 [3] => 라 )
$associative_arr = [
	'a' => 'red',
	'b' => 'green',
	'c' => 'blue',
	'd' => 'olive',
	'e' => 'brown'
];

print_r(array_slice($associative_arr, 0)); // Array ( [a] => red [b] => green [c] => blue [d] => olive [e] => brown )
print_r(array_slice($associative_arr, 2)); // Array ( [c] => blue [d] => olive [e] => brown
print_r(array_slice($associative_arr, 2, 1)); // Array ( [c] => blue )
print_r(array_slice($associative_arr, -2, 1)); // Array ( [d] => olive )
print_r(array_slice($associative_arr, 7)); // Array ( )

// 세 번째 매개변수에 따른 배열 키의 보존 여부 차이
// 연관 배열에서의 키는 항상 이 매개변수에 관계없이 보존됩니다.
print_r(array_slice($associative_arr, 2, 2)); // Array ( [c] => blue [d] => olive )
print_r(array_slice($associative_arr, 2, 2, true)); // Array ( [c] => blue [d] => olive )
// 최신 로그 데이터 배열
$logData = [
	'2022-01-01' => 'Log entry 1',
	'2022-01-02' => 'Log entry 2',
	/* ... */
];

// 최근 5일간의 로그 데이터 추출
$recentLogs = array_slice($logData, 0, 5);

// 결과 출력
print_r($recentLogs);
// 상품 목록 배열
$products = [
    101 => 'Laptop',
    102 => 'Smartphone',
    103 => 'Headphones',
    104 => 'Tablet',
    105 => 'Camera',
    106 => 'Smartwatch',
];

// 상품 목록에서 ID가 102부터 104까지인 상품 추출
$selectedProducts = array_slice($products, 102, 3, true);

// 결과 출력
print_r($selectedProducts);
// 최근 활동 목록 배열
$recentActivity = [
    'Commented on a post',
    'Liked a photo',
    'Posted a status',
    'Followed a user',
    'Shared a link',
];

// 가장 최근 3개의 활동 추출
$selectedActivity = array_slice($recentActivity, -3, null, true);

// 결과 출력
print_r($selectedActivity);