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

PHPz
Libérer: 2024-05-04 13:51:01
original
1133 Les gens l'ont consulté

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!

Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal