이것은 이전 질문 중 하나를 나타냅니다. array_unique vs array_flip - 간단한 문자열과 정수를 다룰 때 이 array_unique()
보다 훨씬 빠릅니다. array_unique()
는 그 다음 두 기능의 중복을array_unique가 값을 정렬하는 이유는 무엇입니까?
소스를 제거 정렬 here 가능하며, 배열의 복사본을 생성 이유를 알고 싶습니다 무엇
이다.
미리 감사드립니다.
이것은 이전 질문 중 하나를 나타냅니다. array_unique vs array_flip - 간단한 문자열과 정수를 다룰 때 이 array_unique()
보다 훨씬 빠릅니다. array_unique()
는 그 다음 두 기능의 중복을array_unique가 값을 정렬하는 이유는 무엇입니까?
소스를 제거 정렬 here 가능하며, 배열의 복사본을 생성 이유를 알고 싶습니다 무엇
이다.
미리 감사드립니다.
알고리즘 적으로 생각하면 중복을 제거하는 방법은 목록을 살펴보고 발견 한 항목을 추적하며 "발견 된"목록에있는 내용을 제거하는 것입니다. 이것을 달성하는 쉬운 방법 중 하나는 목록을 정렬하는 것입니다. 그렇게하면 중복을 효율적으로 제거 할 수 있습니다. 컴퓨터는 말할 것도없고, 당신에 대해 생각해보십시오. 이 목록 중 어느 것이 복제본을 쉽게 제거 할 수 있습니까?
apple
banana
cantaloupe
apple
durian
apple
banana
cantaloupe
또는
apple
apple
apple
banana
banana
cantaloupe
cantaloupe
durian
편집 : 그것으로 조금보고 (그리고 this article을 찾는) 후에는 두 가지 모두 작업이 완료다면, 그들은 기능적으로 동일하지 않은 것처럼 보이거나 적어도 그들은 항상 그렇지 않습니다. 이러한 점 몇 의역 :) (
제가 생각하기에 Dan Fego은 중복을 제거하기 전에 배열을 정렬하는 이유에 대해 훌륭한 답변을주었습니다. 그러나 나는 ’ array_flip()
무엇을 검토하고 싶습니다. 내가 설명하기 위해 다음과 같은 배열을 사용하는 것이다 ’ :
'a' => 'apple'
'b' => 'banana'
'c' => 'apple'
'd' => 'date'
array_flip()
그러나
'apple' => 'a'
'banana' => 'b'
'apple' => 'c'
'date' => 'd'
을 생산 키와 값을 exhanges, 키는 고유해야합니다. manual는 array_flip()
이 처리하는 방법에 대해 설명 : 값이 여러 발생을 가지고
경우 최신 키의 값으로 사용되며, 나머지는 모두 손실됩니다.우리가
array_flip(array_flip())
를 사용하는 경우 우리가 얻을 그래서'banana' => 'b' 'apple' => 'c' 'date' => 'd'
:
array_unique()
뒤에 동기 부여로'b' => 'banana' 'c' => 'apple' 'd' => 'date'
, 우리는 라스무스 러 도프하지 않는 추측 할 수
그래서 우리는 이런 식으로 뭔가를 얻을 수 또는 현재 PHP 개발에 종사하는 사람이 대답에 신경을 써야합니다.
문서화를 살펴보면, 정렬을위한 선택적 매개 변수가 있다는 것에 동의해야합니다. 정렬을 사용하여 내부적으로 비교를 수행하는 것이 거의 불가능합니다. – Tim
array_flip (array_flip())을 사용하면 정렬 할 필요없이 고유 한 값을 얻을 수 있습니다. 반드시 더 좋은 방법이 있어야할까요? – Lizard
키가 중복을 가질 수 없으므로 값이 "부숴 야"합니다. 배열에 대한 할당이 일정 시간이라면 O (n)에서 연산을 남겨 둡니다. 귀하의 질문에 대답하기 위해, 왜 내장 기능이 내 머리 꼭대기에서 그렇게하지 않는지 잘 모르겠습니다. –