PHP 개발 중에는 종종 전체 배열을 통과하는 대신 배열에서 일부 요소를 처리해야합니다. 이를 달성하기 위해 Array_Slice 및 Array_map은 매우 유용한 두 가지 기능입니다. 이 기사는 배열의 일부를 효율적으로 처리 할 수 있도록 조합으로 사용하는 방법을 자세히 설명하고 실제 코드 예제와 함께 설명합니다.
Array_Slice는 PHP가 원래 배열을 수정하지 않고 배열에서 서브 어레이를 추출하기 위해 제공하는 함수입니다. 기본 구문은 다음과 같습니다.
array_slice(array $array, int $offset, ?int $length = null, bool $preserve_keys = false): array
$ 배열 : 작동 할 원래 배열.
$ 오프셋 : 시작 오프셋, 테일에서 시작하는 것을 나타내는 음수 일 수 있습니다.
$ 길이 : 추출 할 요소 수는 생략되면 배열 끝까지 추출됩니다.
$ preserve_keys : 원래 배열의 키 이름을 보존할지 여부.
Array_Map은 배열의 각 요소에 작용하고 처리 된 새 배열을 반환하는 데 사용됩니다. 기본 구문은 다음과 같습니다.
array_map(callable $callback, array $array): array
전체 배열을 반복하고 각 요소를 콜백 함수의 인수로 전달하고 결과를 새 배열로 반환합니다.
큰 배열을 처리 할 때 데이터의 일부 (예 : 페이징, 조건부 처리 등)에만 관심이있는 경우 먼저 Array_Slice를 사용하여 대상 부분을 추출한 다음 Array_Map을 사용하여 논리가 명확 할뿐만 아니라 더 나은 성능을 제공합니다.
제품 배열이 있다고 가정하고 각 제품은 연관 배열이며 처음 5 개의 제품의 이름 만 처리하고 접두사를 균일하게 추가하면됩니다.
<?php
$products = [
['id' => 1, 'name' => '컴퓨터'],
['id' => 2, 'name' => '휴대 전화'],
['id' => 3, 'name' => '이어폰'],
['id' => 4, 'name' => '생쥐'],
['id' => 5, 'name' => '건반'],
['id' => 6, 'name' => '감시 장치'],
];
// 그것을 꺼내기 전에 5 제품
$firstFive = array_slice($products, 0, 5);
// 이름을 접두사합니다“추천하다:”
$processed = array_map(function($product) {
$product['name'] = '추천하다:' . $product['name'];
return $product;
}, $firstFive);
// 출력 결과
foreach ($processed as $item) {
echo $item['id'] . ' - ' . $item['name'] . PHP_EOL;
}
출력 결과는 다음과 같습니다.
1 - 추천하다:컴퓨터
2 - 추천하다:휴대 전화
3 - 추천하다:이어폰
4 - 추천하다:생쥐
5 - 추천하다:건반
이 방법은 특히 사용자 목록을 반환하는 API 인터페이스와 같은 인터페이스 개발에서 일반적입니다.
<?php
// 사용자 데이터를 얻기 위해 시뮬레이션하십시오(데이터베이스에서 발생할 수 있습니다)
$users = [
['id' => 101, 'email' => '[email protected]'],
['id' => 102, 'email' => '[email protected]'],
['id' => 103, 'email' => '[email protected]'],
['id' => 104, 'email' => '[email protected]'],
['id' => 105, 'email' => '[email protected]'],
['id' => 106, 'email' => '[email protected]'],
];
// 페이징 매개 변수가 페이지 당 표시되어 있다고 가정하십시오 3 조각,현재 첫 번째 2 페이지
$page = 2;
$pageSize = 3;
$offset = ($page - 1) * $pageSize;
// 分페이지获取当前페이지的数据
$pagedUsers = array_slice($users, $offset, $pageSize);
// 소문자로 이메일 주소를 형식화하십시오
$formatted = array_map(function($user) {
$user['email'] = strtolower($user['email']);
return $user;
}, $pagedUsers);
// JSON 산출
header('Content-Type: application/json');
echo json_encode($formatted);
반환 결과는 다음과 같습니다.
[
{"id":104,"email":"[email protected]"},
{"id":105,"email":"[email protected]"},
{"id":106,"email":"[email protected]"}
]
array_slice 및 array_map을 사용하는 주요 장점은 다음과 같습니다.
불필요한 계산을 피하십시오 : 필요한 데이터의 일부만 처리하십시오.
논리적 분리 : 데이터 필터링 및 데이터 처리 단계는 명확하고 명확하며 코드를 읽을 수 있습니다.
강력한 유지 관리 : 페이징 또는 처리 로직 수정과 같은 향후 논리를 확장하는 데 편리합니다.
대량의 데이터를 처리 할 때 Array_Slice 및 Array_Map을 사용하면 성능을 향상시킬뿐만 아니라 코드를보다 간결하고 이해하기 쉽게 만듭니다. 백그라운드 관리 시스템, 데이터 인터페이스 또는 실제 비즈니스 로직 에서이 모델은 배우고 적용 할 가치가 있습니다.