현재 위치: > 최신 기사 목록> array_slice를 사용할 때 키 이름 손실을 피하는 방법

array_slice를 사용할 때 키 이름 손실을 피하는 방법

gitbox 2025-05-26

PHP에서 Array_Slice () 는 일반적으로 사용되는 배열 처리 기능이며, 주로 배열에서 지정된 범위의 요소를 추출하는 데 사용됩니다. 그러나 Array_Slice ()를 사용할 때 많은 개발자가 종종 문제가 발생합니다. 원래 배열의 키 이름은 슬라이스 후 0에서 시작하는 정수 색인으로 재설정됩니다. 주요 이름은 중요한 의미 또는 구조적 의미를 가질 수 있으므로 연관 배열을 다룰 때 특히 번거 롭습니다.

이 기사는 array_slice ()를 사용할 때 키 이름 손실을 피하는 방법을 자세히 소개하고 이해하는 데 도움이되는 실용적인 예제 코드를 제공합니다.

질문 예제

 $users = [
    'alice' => 'Alice Smith',
    'bob' => 'Bob Johnson',
    'carol' => 'Carol King',
    'dave' => 'Dave Lee'
];

$sliced = array_slice($users, 1, 2);
print_r($sliced);

실행 결과 :

 Array
(
    [0] => Bob Johnson
    [1] => Carol King
)

위에서 볼 수 있듯이 'Bob''Carol' 키 이름은 숫자 인덱스 01 으로 대체되며, 이는 후속 논리에 영향을 줄 수 있습니다.

해결 방법 : Preserve_Keys 매개 변수를 사용하십시오

php의 array_slice () 함수는 실제로 선택적인 네 번째 매개 변수 인 Preserve_keys를 지원합니다. 기본값은 False 이므로 키 이름이 재설정됩니다. True 로 설정하면 원래 배열에서 키 이름을 유지할 수 있습니다.

수정 된 코드 예 :

 $users = [
    'alice' => 'Alice Smith',
    'bob' => 'Bob Johnson',
    'carol' => 'Carol King',
    'dave' => 'Dave Lee'
];

$sliced = array_slice($users, 1, 2, true);
print_r($sliced);

실행 결과 :

 Array
(
    [bob] => Bob Johnson
    [carol] => Carol King
)

원래 키 이름은 Preserve_keys를 True 로 설정하여 성공적으로 보존되었습니다.

사용 시나리오의 예 : 데이터의 페이지 매김

일부 사용자 데이터를 표시 할 때 Pagination Processing에 Array_Slice ()를 사용하는 사용자 관리 시스템을 개발하고 있다고 상상해보십시오.

 $allUsers = [
    'alice' => ['name' => 'Alice', 'email' => '[email protected]'],
    'bob' => ['name' => 'Bob', 'email' => '[email protected]'],
    'carol' => ['name' => 'Carol', 'email' => '[email protected]'],
    'dave' => ['name' => 'Dave', 'email' => '[email protected]']
];

$page = 1;
$pageSize = 2;
$offset = ($page - 1) * $pageSize;

$currentUsers = array_slice($allUsers, $offset, $pageSize, true);

foreach ($currentUsers as $username => $info) {
    echo "사용자 이름: $username, 우편: {$info['email']}\n";
}

산출:

 사용자 이름: alice, 우편: [email protected]
사용자 이름: bob, 우편: [email protected]

키 이름을 유지하면 템플릿에서 사용자 식별자로 사용할 때 또는 기능 링크를 편집 할 때 URL을 스 플라이 싱하는 등 사용자 이름 키를 통해 직접 처리 할 수 ​​있습니다.

 echo "<a href=\"https://gitbox.net/user/edit.php?user=$username\">편집하다</a>";

요약

Array_Slice ()를 사용하는 경우 원래 배열의 키 이름을 유지하려면 네 번째 매개 변수를 true 로 설정하십시오.

 array_slice($array, $offset, $length, true);

이것은 작은 세부 사항이지만 특히 연관 배열 및 구조화 된 데이터를 다룰 때 코드의 견고성과 유지 가능성을 크게 향상시킬 수 있습니다. 이를 염두에두면 주요 이름 손실로 인한 다양한 논리적 오류와 디버깅 문제를 피할 수 있습니다.