php에서 array_flip () 는 매우 실용적인 기능이며 그 기능은 그 기능입니다. 다시 말해, 원래 배열의 값은 새로운 키가되고 원래 키는 해당 값이됩니다.
그러나 Array_flip ()을 사용한 후 배열의 길이가 작아 질 수 있습니다. 이게 왜? 원래 값에 중복이 있기 때문입니까? 대답은 : 예, 값이 반복되기 때문입니다!
$original = [
'a' => 'apple',
'b' => 'banana',
'c' => 'apple',
];
$flipped = array_flip($original);
print_r($flipped);
Array
(
[banana] => b
[apple] => c
)
보시다시피, $ 원본 배열에는 원래 3 개의 요소가 있었지만 $ Flipped Array에는 2 개의 요소가있었습니다. 왜 'Apple'=> c 'Apple'=> a를 덮어 쓰나요?
Array_flip ()은 배열의 값이 키, 즉 문자열 또는 정수로 사용할 수있는 유형이어야합니다 . 뒤집을 때 동일한 값에 해당하는 두 개의 키가 있으면 후자는 전자를 무시합니다 .
위의 예에서 :
'A'=> 'Apple' → 'Apple'=> a
'C'=> 'Apple' → 'Apple'=> C (원래 'Apple'=> a를 재정의합니다)
따라서 'Apple'=> C 만이 뒤집힌 배열에 유지되어 배열 길이가 감소합니다.
모든 매핑 관계를 보존 해야하는 경우 값을 배열에 고려하고 수동으로 처리 할 수 있습니다.
$original = [
'a' => 'apple',
'b' => 'banana',
'c' => 'apple',
];
$flipped = [];
foreach ($original as $key => $value) {
if (!isset($flipped[$value])) {
$flipped[$value] = [];
}
$flipped[$value][] = $key;
}
print_r($flipped);
Array
(
[apple] => Array
(
[0] => a
[1] => c
)
[banana] => Array
(
[0] => b
)
)
이렇게하면 모든 주요 정보를 유지하고 덮어 쓰는 문제를 피할 수 있습니다.
URL 짧은 링크 서비스 (예 : https://m66.net/abc123 )를하고 있다고 가정하면 원본 링크 세트와 짧은 코드가있을 수 있습니다.
$links = [
'abc123' => 'https://m66.net/page1',
'def456' => 'https://m66.net/page2',
'ghi789' => 'https://m66.net/page1',
];
$reverse = array_flip($links);
print_r($reverse);
결과적으로 https://m66.net/page1은 매핑을 한 번만 유지하면 (아마도 'GHI789' ), 이전 'ABC123'은 덮어 씁니다. 이것은 짧은 체인 카운터 체크 논리에 영향을 미칩니다.
따라서 실제 애플리케이션에서는 짧은 링크를 반대로 확인하려면 중복 값이 있는지 여부를 결정하고 적절한 데이터 구조를 선택해야합니다.
Array_flip ()는 배열의 키와 값을 교환합니다.
원래 배열에 중복 값이있는 경우, 마지막 값 만 뒤집은 후에는 유지되며 이전 값 만 덮고 이전 값은 덮어 씁니다.
이 상황으로 인해 배열이 더 작아집니다 .
모든 매핑 관계를 유지 해야하는 경우 배열에 해당하는 값으로 배열을 수동으로 빌드 할 수 있습니다.
이 기능을 이해하면 PHP 프로그램을 작성할 때 데이터 손실을 피하는 데 도움이됩니다. 이 기사가 Array_flip () 의 동작을보다 명확하게 이해하는 데 도움이되기를 바랍니다!