PHP 프로그래밍에서 Array_flip ()는 배열의 키와 값을 페어링 할 수있는 일반적으로 사용되는 기능입니다. 그러나 많은 개발자들이 사용하는 동안, 특히 배열에 중복 값이있을 때 "데이터 손실"문제에 직면 할 수 있습니다. 그래서 무슨 일이 일어나고 있습니까? 이 기사는 Array_flip () 의 동작을 자세히 설명하고 예제를 사용하여 그 배후의 원리를 이해하는 데 도움이됩니다.
Array_flip () 는 PHP의 내장 어레이 함수이며 키와 값을 배열에서 바꾸는 데 사용됩니다. 기본 구문은 다음과 같습니다.
array_flip(array $array): array
기능은 입력 배열의 각 키와 값을 비교하는 것입니다. 원래 값은 새 키가되고 원래 키는 새 값이됩니다.
$input = [
'a' => 'apple',
'b' => 'banana',
'c' => 'cherry'
];
$result = array_flip($input);
print_r($result);
출력은 다음과 같습니다.
Array
(
[apple] => a
[banana] => b
[cherry] => c
)
키와 값이 아무런 문제없이 성공적으로 보답 함을 알 수 있습니다.
원래 배열에 중복 값이 있을 때 Array_flip () 는 어떻게됩니까?
예를 살펴 보겠습니다.
$input = [
'a' => 'apple',
'b' => 'banana',
'c' => 'apple'
];
$result = array_flip($input);
print_r($result);
산출:
Array
(
[banana] => b
[apple] => c
)
여기에는 중요한 세부 사항이 있습니다. Apple은 A 와 C 의 값이지만 결국 C => Apple 쌍 만 유지합니다 . 이것은 A => Apple이 폐기되었음을 의미합니다.
PHP에서 배열의 키는 독특합니다. Array_flip () 가 값을 키로 바꾸면 여러 값이 동일하면 "키 충돌"이 발생합니다. PHP는 후속 값으로 이전 값을 덮어 쓸 것이며, 이는 데이터 손실로 이어질 것입니다.
지금 예제를 계속하면 Array_flip ()를 실행하는 프로세스는 다음과 같습니다.
a => Apple → Apple => a
b => 바나나 → 바나나 => b
C => Apple → Apple => C ( 이전 Apple => A를 덮어 쓰기 )
따라서 최종 결과에 Apple => C 만이 유지되고 원래 Apple => a는 덮어 씁니다.
배열을 "키 가치 스왑"해야하지만 데이터 손실을 허용 할 수없는 경우 다음 솔루션을 고려할 수 있습니다.
값을 배열의 키로 사용하면 값이 배열이되어 모든 원래 키를 유지하십시오.
$input = [
'a' => 'apple',
'b' => 'banana',
'c' => 'apple'
];
$result = [];
foreach ($input as $key => $value) {
if (!isset($result[$value])) {
$result[$value] = [];
}
$result[$value][] = $key;
}
print_r($result);
산출:
Array
(
[apple] => Array
(
[0] => a
[1] => c
)
[banana] => Array
(
[0] => b
)
)
이것은 데이터 손실을 피할뿐만 아니라 동일한 값에 해당하는 키를 명확하게 볼 수 있습니다.
예를 들어, 구성 테이블을 처리 할 때 데이터베이스 필드를 프론트 엔드 필드에 매핑하십시오.
$mapping = [
'username' => 'user',
'email' => 'user',
'address' => 'location'
];
$flipped = array_flip($mapping);
print_r($flipped);
산출:
Array
(
[user] => email
[location] => address
)
사용자 => username 과 user => 이메일이 모두 예약되어 있기를 바랍니다. 그러나 실제로 사용자 => 이메일 만 남아 있고 다른 이메일은 커버됩니다. 이 경우, 논리적 오류를 피하기 위해 위에서 언급 한 "값에 대한 값"실습을 사용하는 것이 좋습니다.
array_flip ()는 키와 값을 페어링합니다.
원래 배열에 중복 값이있는 경우 "키 충돌"이 발생합니다.
PHP의 배열 키는 고유해야하므로 후자는 이전 키가 이전을 덮어 쓰고 데이터 손실을 초래합니다.
값은 키로 수동으로 변환 될 수 있으며 원래 키는 모든 정보를 보존하기 위해 배열에 저장됩니다.