Table des matières
Échange clé-valeur de tableau PHP : comparaison des performances et explication détaillée de la solution optimale
Maison développement back-end tutoriel php Échange clé-valeur de tableau PHP : comparaison des performances et explication détaillée de la solution optimale

Échange clé-valeur de tableau PHP : comparaison des performances et explication détaillée de la solution optimale

May 04, 2024 pm 01:51 PM
php 数组操作 字符串数组

La meilleure solution pour l'échange clé-valeur de tableau PHP : en utilisant la fonction array_flip() intégrée, la complexité temporelle est O(n). Pour les tableaux plus grands, les avantages en termes de performances de array_flip() sont plus évidents. Cas pratique : array_flip() peut être utilisé pour convertir le tableau de noms de produits dans le panier en un tableau de quantités de produits.

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

Échange clé-valeur de tableau PHP : comparaison des performances et explication détaillée de la solution optimale

En PHP, le tableau est une structure de données utile. Parfois, vous devez échanger les clés et les valeurs d'un tableau pour obtenir un nouveau tableau. Cet article compare trois méthodes courantes et discute de leurs performances et des meilleures pratiques.

Première méthode : utilisez la fonction array_flip()array_flip() 函数

$input = ['a' => 1, 'b' => 2, 'c' => 3];
$output = array_flip($input);
Copier après la connexion

方法二:使用 array_combine() 函数

$keys = array_keys($input);
$values = array_values($input);
$output = array_combine($values, $keys);
Copier après la connexion

方法三:使用自定义循环

$output = [];
foreach ($input as $key => $value) {
    $output[$value] = $key;
}
Copier après la connexion

性能对比

使用 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);
Copier après la connexion

最终得到的 $counts

Array
(
    [Apple] => 2
    [Banana] => 2
    [Orange] => 1
)
Copier après la connexion
🎜Deuxième méthode : utilisez la fonction array_combine()🎜rrreee🎜 🎜Troisième méthode : Utilisation de boucles personnalisées🎜rrreee🎜🎜Comparaison des performances🎜🎜L'utilisation de la fonction array_flip() est généralement la plus rapide car il s'agit d'une fonction intégrée et a été hautement optimisé. La fonction array_combine() est légèrement plus lente car elle nécessite deux appels de fonction supplémentaires (array_keys() et array_values()). La boucle personnalisée est la plus lente car elle nécessite une boucle manuelle sur l'ensemble du tableau. 🎜🎜Le tableau suivant résume la comparaison des performances des trois méthodes : 🎜
Méthode Complexité temporelle
array_flip() O(n)
array_combine() O(n * log(n))
Boucle personnalisée O(n^2)
🎜🎜Bonnes pratiques🎜🎜Dans la plupart des cas, 🎜il est recommandé d'utiliser la fonction array_flip() pour l'échange clé-valeur. Pour les baies plus petites, la différence de performances est négligeable. Mais pour les tableaux plus grands, les avantages de la fonction array_flip() deviennent évidents. 🎜🎜🎜Cas pratique🎜🎜Supposons que nous ayons un tableau de chaînes représentant les noms des produits dans le panier. Pour créer un autre tableau où les clés sont les noms de produits et les valeurs sont les quantités de produits, vous pouvez utiliser la fonction array_flip() : 🎜rrreee🎜Le $counts résultant > le tableau sera le suivant : 🎜rrreee

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Dec 24, 2024 pm 04:42 PM

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian

Configuration du projet CakePHP Configuration du projet CakePHP Sep 10, 2024 pm 05:25 PM

Configuration du projet CakePHP

Date et heure de CakePHP Date et heure de CakePHP Sep 10, 2024 pm 05:27 PM

Date et heure de CakePHP

Téléchargement de fichiers CakePHP Téléchargement de fichiers CakePHP Sep 10, 2024 pm 05:27 PM

Téléchargement de fichiers CakePHP

Routage CakePHP Routage CakePHP Sep 10, 2024 pm 05:25 PM

Routage CakePHP

Discuter de CakePHP Discuter de CakePHP Sep 10, 2024 pm 05:28 PM

Discuter de CakePHP

Comment configurer Visual Studio Code (VS Code) pour le développement PHP Comment configurer Visual Studio Code (VS Code) pour le développement PHP Dec 20, 2024 am 11:31 AM

Comment configurer Visual Studio Code (VS Code) pour le développement PHP

Guide rapide CakePHP Guide rapide CakePHP Sep 10, 2024 pm 05:27 PM

Guide rapide CakePHP

See all articles