현재 위치: > 최신 기사 목록> array_flip ()를 사용하여 열거 값 배열을 우아하게 반전시키는 방법

array_flip ()를 사용하여 열거 값 배열을 우아하게 반전시키는 방법

M66 2025-06-03

매일 PHP 개발에서, 우리는 종종 "열거 값? 태그"사이의 상호 전환에 직면합니다. 예를 들어, 주문 상태 :

 $statusMap = [
    0 => '지불해야합니다',
    1 => '유급의',
    2 => '배송',
    3 => '완전한',
];

이 구조는 상태 코드에서 해당 텍스트 설명의 추출을 용이하게합니다. 그러나 때때로 우리는 "선적 된"을 기반으로 해당 상태 코드 2 를 취하는 것과 같이 다른 방법으로 운영해야합니다. 현재 추가 구조적 지원이 없으면 전체 배열을 가로 지르고 유사한 논리를 작성해야 할 수도 있습니다.

 function getStatusCode($label) {
    foreach ($statusMap as $code => $desc) {
        if ($desc === $label) {
            return $code;
        }
    }
    return null;
}

조금 오래 찢어 보입니다. 현재 PHP와 함께 제공되는 array_flip () 함수는 유용합니다!

Array_flip () 란 무엇입니까?

Array_flip () 는 PHP의 내장 함수이며, 배열의 "키"와 값을 페어링하는 데 사용됩니다.

 array_flip(array $array): array

참고 :

  • 배열의 값은 키 (예 : 문자열 또는 정수)로 사용할 수있는 고유하고 스칼라 값이어야합니다.

  • 중복 값이있는 경우 다음 값이 이전 값을 덮어 씁니다.

array_flip ()를 사용하여 열거 값 반전을 구현하십시오

열거적인 값 배열을 우아하게 뒤집는 방법을 살펴 보겠습니다.

 $statusMap = [
    0 => '지불해야합니다',
    1 => '유급의',
    2 => '배송',
    3 => '완전한',
];

$labelToCodeMap = array_flip($statusMap);

echo $labelToCodeMap['배송']; // 산출 2

순간적으로 훨씬 간단합니까? "label"에서 "value"로 매핑 테이블을 얻으려면 Array_flip () 만 사용합니다.

실제 사례 : 양식 드롭 다운 옵션 값 변환

사용자 성별 옵션이 열거되어 있다고 가정합니다.

 $genderMap = [
    'M' => '남성',
    'F' => '여성',
    'O' => '다른',
];

양식을 제출할 때 사용자는 'F' 로 다시 변환하고 데이터베이스에 저장하려는 '여성'을 선택합니다.

 $input = '여성';
$labelToValue = array_flip($genderMap);
$genderCode = $labelToValue[$input] ?? null;

if ($genderCode === null) {
    echo "불법 성별 가치";
} else {
    // 데이터베이스에 저장되었다고 가정하십시오
    saveGenderToDB($genderCode);
}

코드가 더 작을뿐만 아니라 논리는 매우 명확하고 이해하기 쉽습니다.

사용 팁 : 캐시 인버트 어레이

여러 장소에서 거꾸로 된 배열을 사용해야하는 경우 프로젝트에서 공통 방법을 정의 할 수도 있습니다.

 function getFlippedMap(array $map): array {
    static $cache = [];

    $hash = md5(json_encode($map));
    if (!isset($cache[$hash])) {
        $cache[$hash] = array_flip($map);
    }

    return $cache[$hash];
}

이런 식으로 여러 번 호출하더라도 기존 반전 결과를 재사용하여 성능을 향상시킬 수 있습니다.

참고 : 값은 고유해야합니다

원래 배열의 값이 고유하지 않으면 Array_flip ()는 이전 키를 자동으로 덮어 씁니다.

 $arr = [
    'a' => 'apple',
    'b' => 'banana',
    'c' => 'apple',
];

print_r(array_flip($arr));

출력은 다음과 같습니다.

 Array
(
    [banana] => b
    [apple] => c // 'a' 덮힌
)

이로 인해 열거 값을 다룰 때 버그가 발생할 수 있으므로 반전 전에 값이 고유한지 확인하는 것이 좋습니다.

요약

Array_flip () 는 작지만 매우 실용적인 기능이며 특히 "레이블? 값"사이의 빠른 변환에 적합합니다. 이를 통해 PHP 코드를 더 간결하고 읽기 쉽고 오류가 줄어 듭니다. 다음에 루프를 작성할 때, 당신은 그것에 대해 생각할 수도 있습니다 : Array_flip ()를 사용하여 한 단계로 가져올 수 있습니까?