in_array 또는 isset 중 어느 것이 더 효율적인가요?
대규모 배열을 처리할 때는 효율성을 위해 코드를 최적화하는 것이 중요합니다. 두 가지 일반적인 접근 방식은 in_array 함수를 사용하고 isset을 사용하여 키 존재를 확인하는 것입니다.
in_array
in_array 함수는 값을 배열과 비교하고 배열이 있으면 true를 반환합니다. . 시간 복잡도는 O(n)입니다. 여기서 n은 배열의 요소 수입니다. 이는 배열 크기가 증가함에 따라 검색 시간이 선형적으로 증가한다는 것을 의미합니다.
isset
isset 함수는 값에 관계없이 배열에 키가 있는지 확인합니다. . 해시 테이블을 사용하여 키와 값을 저장하므로 키 조회에 O(1) 시간 복잡도가 발생합니다.
제공된 코드 예제에서는 다음과 같은 이유로 isset이 선호됩니다.
벤치마킹 결과
이 효율성 차이를 설명하기 위해 10,000개의 요소가 있는 배열을 고려해 보세요.
isset: 0.009623 in_array: 1.738441
배열 크기가 커짐에 따라 두 접근 방식 간의 성능 격차가 더욱 커집니다.
추가 고려 사항
배열은 문제가 됩니다. 특히 $a[$new_val] 구문을 사용할 때 다음과 같은 충돌 방지 접근 방식을 사용할 수 있습니다. $a[md5($new_val)]. 이 기술은 또 다른 복잡성 계층을 도입하지만 충돌하기 쉬운 키 생성을 이용하는 잠재적인 DoS 공격을 완화할 수 있습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3