목차
PHP 배열 키-값 교환: 성능 비교 및 ​​최적 솔루션에 대한 자세한 설명
백엔드 개발 PHP 튜토리얼 PHP 배열 키-값 교환: 성능 비교 및 ​​최적 솔루션에 대한 자세한 설명

PHP 배열 키-값 교환: 성능 비교 및 ​​최적 솔루션에 대한 자세한 설명

May 04, 2024 pm 01:51 PM
php 어레이 작업 문자열 배열

PHP 배열 키-값 교환을 위한 최상의 솔루션: 내장된 array_flip() 함수를 사용하면 시간 복잡도는 O(n)입니다. 더 큰 배열의 경우 array_flip()의 성능 이점이 더욱 분명해집니다. 실제 사례: array_flip()을 사용하면 장바구니에 있는 제품 이름 배열을 제품 수량 배열로 변환할 수 있습니다.

PHP 数组键值互换:性能对比及最优方案详解

PHP 배열 키-값 교환: 성능 비교 및 ​​최적 솔루션에 대한 자세한 설명

PHP에서 배열은 유용한 데이터 구조입니다. 때로는 새로운 배열을 얻기 위해 배열의 키와 값을 바꿔야 할 때가 있습니다. 이 문서에서는 세 가지 일반적인 방법을 비교하고 해당 방법의 성능과 모범 사례에 대해 설명합니다.

방법 1: array_flip() 함수 사용array_flip() 函数

$input = ['a' => 1, 'b' => 2, 'c' => 3];
$output = array_flip($input);
로그인 후 복사

方法二:使用 array_combine() 函数

$keys = array_keys($input);
$values = array_values($input);
$output = array_combine($values, $keys);
로그인 후 복사

方法三:使用自定义循环

$output = [];
foreach ($input as $key => $value) {
    $output[$value] = $key;
}
로그인 후 복사

性能对比

使用 array_flip() 函数通常是最快的,因为它是一个内置函数,并且经过了高度优化。array_combine() 函数的速度略慢,因为需要执行两个额外的函数调用(array_keys()array_values())。自定义循环是最慢的,因为它需要手动遍历整个数组。

下表总结了三种方法的性能对比:

方法时间复杂度
array_flip()O(n)
array_combine()O(n * log(n))
自定义循环O(n^2)

最佳实践

在大多数情况下,建议使用 array_flip() 函数进行键值互换。对于较小的数组,性能差异可以忽略不计。但对于较大的数组,array_flip() 函数的优势就会显现出来。

实战案例

假设我们有一个字符串数组,表示购物车中的商品名称。要创建另一个数组,其中键是商品名称,而值是商品数量,可以使用 array_flip() 函数:

$cart = ['Apple', 'Banana', 'Orange', 'Apple', 'Banana'];

// 创建商品数量数组
$counts = array_flip($cart);
로그인 후 복사

最终得到的 $counts

Array
(
    [Apple] => 2
    [Banana] => 2
    [Orange] => 1
)
로그인 후 복사
🎜방법 2: array_combine() 함수 사용🎜rrreee🎜 🎜방법 3: 사용자 정의 루프 사용🎜rrreee🎜🎜성능 비교🎜🎜 array_flip() 함수를 사용하는 것이 일반적으로 내장 함수이고 다음을 포함하므로 가장 빠릅니다. 고도로 최적화되었습니다. array_combine() 함수는 두 개의 추가 함수 호출(array_keys()array_values())이 필요하기 때문에 약간 느립니다. 사용자 지정 루프는 전체 배열을 수동으로 반복해야 하기 때문에 가장 느립니다. 🎜🎜다음 표에는 세 가지 방법의 성능 비교가 요약되어 있습니다. 🎜
방법 시간 복잡성
array_flip() O(n)
array_combine() O(n * log(n))
사용자 정의 루프 O(n^2)
🎜🎜모범 사례🎜🎜대부분의 경우 🎜키-값 교환에는 array_flip() 함수를 사용하는 것이 좋습니다. 더 작은 어레이의 경우 성능 차이는 무시할 수 있습니다. 그러나 더 큰 배열의 경우 array_flip() 함수의 장점이 분명해집니다. 🎜🎜🎜실용 사례🎜🎜장바구니에 담긴 제품 이름을 나타내는 문자열 배열이 있다고 가정해 보겠습니다. 키가 제품 이름이고 값이 제품 수량인 또 다른 배열을 만들려면 array_flip() 함수를 사용할 수 있습니다. 🎜rrreee🎜결과 $counts 배열은 다음과 같습니다. 표시: 🎜rrreee

위 내용은 PHP 배열 키-값 교환: 성능 비교 및 ​​최적 솔루션에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Ubuntu 및 Debian용 PHP 8.4 설치 및 업그레이드 가이드 Ubuntu 및 Debian용 PHP 8.4 설치 및 업그레이드 가이드 Dec 24, 2024 pm 04:42 PM

Ubuntu 및 Debian용 PHP 8.4 설치 및 업그레이드 가이드

CakePHP 날짜 및 시간 CakePHP 날짜 및 시간 Sep 10, 2024 pm 05:27 PM

CakePHP 날짜 및 시간

CakePHP 파일 업로드 CakePHP 파일 업로드 Sep 10, 2024 pm 05:27 PM

CakePHP 파일 업로드

CakePHP 프로젝트 구성 CakePHP 프로젝트 구성 Sep 10, 2024 pm 05:25 PM

CakePHP 프로젝트 구성

CakePHP 라우팅 CakePHP 라우팅 Sep 10, 2024 pm 05:25 PM

CakePHP 라우팅

CakePHP 토론 CakePHP 토론 Sep 10, 2024 pm 05:28 PM

CakePHP 토론

CakePHP 빠른 가이드 CakePHP 빠른 가이드 Sep 10, 2024 pm 05:27 PM

CakePHP 빠른 가이드

PHP 개발을 위해 Visual Studio Code(VS Code)를 설정하는 방법 PHP 개발을 위해 Visual Studio Code(VS Code)를 설정하는 방법 Dec 20, 2024 am 11:31 AM

PHP 개발을 위해 Visual Studio Code(VS Code)를 설정하는 방법

See all articles