PHP에서 Array_flip () 는 매우 실용적인 기능이며 그 기능은 배열을 넣는 것입니다. 즉, 원래 값은 새로운 키가되고 원래 키는 새로운 값이됩니다.
그러나 문제는 원래 배열에 중복 값이 있다면 어떻게됩니까? Array_flip ()는 어떻게 처리됩니까? 이전 값을 덮어 쓰나요? 이 기사는이 문제를 자세히 분석합니다.
기본 예를 살펴 보겠습니다.
$input = [
'a' => 1,
'b' => 2,
'c' => 3
];
$flipped = array_flip($input);
print_r($flipped);
출력 결과 :
Array
(
[1] => a
[2] => b
[3] => c
)
값은 고유하고 키로 안전하게 사용할 수 있기 때문에 괜찮습니다.
이번에는 중복 값이있는 다른 예를 살펴 보겠습니다.
$input = [
'first' => 'apple',
'second' => 'banana',
'third' => 'apple'
];
$flipped = array_flip($input);
print_r($flipped);
출력 결과 :
Array
(
[banana] => second
[apple] => third
)
보시다시피, 'First'=> 'Apple' 키는 플립 후 'Third'=> 'Apple' 에 의해 덮어 씁니다. 즉, Array_flip ()는 마지막 발생 값을 최종 키로 사용하며 이전 동일한 값 항목은 무시됩니다 (재정의).
우발적 인 데이터 손실을 피하기 위해 빅 데이터를 처리 할 때 특별한주의를 기울여야합니다.
태그 이름에 해당하는 각 태그 ID가있는 태그 시스템을 개발한다고 가정 해 봅시다.
$tags = [
1 => 'php',
2 => 'javascript',
3 => 'php'
];
$flipped = array_flip($tags);
태그 이름으로 ID를 다시 확인할 수 있지만 현재 'PHP'는 하나의 ID ( 3 ) 만 유지하고 ID 1은 덮어 씁니다. 이 상황을 안전하게 처리하려면 수동 트래버스와 같은 다른 방법을 사용해야 할 수도 있습니다.
$reverse = [];
foreach ($tags as $id => $name) {
$reverse[$name][] = $id;
}
이를 통해 모든 ID를 유지하고 다중 관계가됩니다.
PHP의 배열 키는 정수 또는 문자열 이어야하므로 값이 배열, 객체 또는 Null 등이라면 키로 사용할 수없는 경우 Array_flip ()는 다음을 경고합니다.
$input = [
'a' => null,
'b' => ['nested']
];
$flipped = array_flip($input); // 오류를보고합니다
Array_flip ()는 값을 키로, 키는 값으로 취합니다.
중복 값이 발생하면 앞면이 뒷면으로 덮어 씁니다.
데이터 손실을 피하려면 그룹화와 같은보다 유연한 처리 방법을 사용하는 것을 고려하십시오.
값은 키로 사용할 수있는 유형이어야합니다.