PHP에서 사전 (협회 어레이)은 키 값 쌍 매핑 관계를 저장하는 데 사용되는 매우 일반적인 데이터 구조입니다. 일반적으로 키를 통해 해당 값을 빠르게 찾습니다. 그러나 때로는 값을 기반으로 해당 키를 반대로 찾아야하며 리버스 매핑 기능이 필요합니다. 리버스 매핑을 구현하는 방법에는 여러 가지가 있으며 PHP의 내장 Array_flip () 함수는 간결하고 효율적인 솔루션을 제공합니다.
이 기사는 Array_flip () 함수를 사용하여 리버스 매핑 사전을 설계하고 실제 예제를 기반으로 응용 프로그램 시나리오 및 예방 조치를 설명하는 방법을 소개합니다.
Array_flip () 는 PHP의 내장 기능입니다. 기능은 어레이에서 키와 값을 비교하고 키는 값이되고 값은 키가됩니다. 기본 사용량은 다음과 같습니다.
$original = ['a' => 1, 'b' => 2, 'c' => 3];
$flipped = array_flip($original);
// $flipped = [1 => 'a', 2 => 'b', 3 => 'c'];
배열의 값은 키 (일반적으로 문자열 또는 정수)로 사용할 수있는 유형이어야하며, 그렇지 않으면 부정확 한 플립 또는 데이터 손실을 유발합니다.
리버스 매핑 사전 패턴은 프로그램에서 두 개의 매핑을 유지하는 것을 말합니다.
전방 매핑 : key => 값
리버스 매핑 : value => 키
이는 사용자 ID를 기반으로 사용자 이름을 찾고 사용자 이름을 기반으로 사용자 ID를 찾는 등 양방향 검색이 필요한 경우 유용합니다.
Array_flip ()를 사용하면 기존 포워드 맵을 기반으로 리버스 맵을 쉽게 생성 할 수 있습니다.
class BiDirectionalMap {
private array $forwardMap;
private array $reverseMap;
public function __construct(array $map) {
$this->forwardMap = $map;
$this->reverseMap = array_flip($map);
}
// 키로 값을 찾으십시오
public function getValue($key) {
return $this->forwardMap[$key] ?? null;
}
// 가치로 키를 찾으십시오
public function getKey($value) {
return $this->reverseMap[$value] ?? null;
}
}
$colorMap = [
'red' => 'FF0000',
'green' => '00FF00',
'blue' => '0000FF',
];
$biMap = new BiDirectionalMap($colorMap);
// 전진 검색
echo $biMap->getValue('red'); // 산출:FF0000
// 역 검색
echo $biMap->getKey('00FF00'); // 산출:green
가치 고유성
Array_flip () 가 뒤집히면 값이 반복되면 마지막 해당 키 만 유지하여 데이터 손실을 유발할 수 있습니다. 예를 들어:
$arr = ['a' => 1, 'b' => 2, 'c' => 1];
$flipped = array_flip($arr);
// 결과:[1 => 'c', 2 => 'b'],열쇠'a'의 가치
따라서 Array_flip ()를 사용하기위한 전제 조건은 값이 고유해야한다는 것입니다.
값 유형 제한 <br> 문자열 또는 정수 만 배열 키로 사용할 수 있습니다. 배열의 값 유형이 조건을 충족하지 않으면 올바르게 뒤집을 수 없습니다.
동적 동기화 <br> 맵이 동적으로 수정되면 각 수정 후 리버스 맵을 재생하여 동기화해야합니다.
Array_flip () 함수를 통해 PHP 개발자는 리버스 매핑 사전의 설계 패턴을 쉽게 구현하여 양방향 검색의 구현 로직을 크게 단순화 할 수 있습니다. 이 방법은 간단하고 효율적이며 요구 사항을 충족하는 고유 한 값과 유형의 시나리오에 적합합니다. 그러나 그것을 사용할 때는 우발적 인 덮어 쓰기 또는 오류를 피하기 위해 값의 독창성과 유형 제한에주의를 기울여야합니다.