Maison > développement back-end > Problème PHP > PHP trouve la clé dans un tableau à deux dimensions en une seule boucle

PHP trouve la clé dans un tableau à deux dimensions en une seule boucle

WBOY
Libérer: 2023-05-07 14:53:08
original
590 Les gens l'ont consulté

PHP, en tant que langage de programmation puissant, possède des structures de données riches, parmi lesquelles le tableau bidimensionnel est une structure de données couramment utilisée. Dans le développement quotidien, nous devons souvent parcourir un tableau bidimensionnel pour trouver ses données clés. Cependant, si des boucles imbriquées sont utilisées pour chaque parcours, la complexité temporelle deviendra très élevée. Cet article présentera une méthode pour trouver la valeur clé d'un tableau à deux dimensions dans une boucle.

  1. Qu'est-ce qu'un tableau bidimensionnel ?

Un tableau bidimensionnel est un type spécial de tableau qui contient plusieurs tableaux et organise les éléments sous forme de lignes et de colonnes. Un tableau bidimensionnel peut être considéré comme une matrice composée de plusieurs tableaux unidimensionnels, où chaque élément est accessible par un index de ligne et un index de colonne. En PHP, un tableau bidimensionnel peut être défini de la manière suivante :

$arr = array(
    array(1, 2, 3),
    array(4, 5, 6),
    array(7, 8, 9)
);
Copier après la connexion

Le code ci-dessus définit un tableau bidimensionnel $arr, qui contient trois tableaux unidimensionnels, chacun avec trois éléments.

  1. Méthode traditionnelle de parcours de tableau bidimensionnel

Dans la méthode traditionnelle de parcours de tableau bidimensionnel, il est généralement nécessaire d'utiliser deux boucles imbriquées, l'une pour parcourir les lignes et l'autre pour parcourir les colonnes. Par exemple :

foreach ($arr as $key1 => $value1) {
    foreach ($value1 as $key2 => $value2) {
        if ($value2 == $target) {
            echo "关键值所在的行为:" . $key1 . "<br>";
            echo "关键值所在的列为:" . $key2 . "<br>";
        }
    }
}
Copier après la connexion

Dans le code ci-dessus, nous utilisons une boucle foreach pour parcourir chaque élément du tableau $arr. La première boucle parcourt les lignes et la deuxième boucle parcourt les colonnes. Lorsque l'élément cible $target est trouvé, affichez la ligne et la colonne où se trouve l'élément.

Cependant, la complexité temporelle de cette méthode est $O(n^2)$, c'est-à-dire qu'à mesure que la taille du tableau augmente, le nombre de boucles augmente de façon exponentielle.

  1. Méthode de recherche de valeurs clés dans une boucle

Maintenant, nous introduisons une méthode plus efficace qui peut trouver les valeurs clés dans un tableau bidimensionnel en une seule boucle. Cette méthode est basée sur certaines fonctions de tableau fournies par PHP et présente l'avantage d'une complexité temporelle de $O(n)$.

Tout d'abord, nous devons utiliser la fonction array_map de PHP pour convertir le tableau à deux dimensions en un tableau à une dimension, puis utiliser la fonction array_search pour trouver la valeur cible dans le tableau à une dimension. Le code est le suivant :

// 将二维数组转成一维数组
$array = array_reduce($arr, 'array_merge', array());

// 在一维数组中查找目标值
$key = array_search($target, $array);

// 计算目标值所在的行和列
$row = floor($key / count($arr[0]));
$col = $key % count($arr[0]);

echo "关键值所在的行为:" . $row . "<br>";
echo "关键值所在的列为:" . $col . "<br>";
Copier après la connexion

Dans le code ci-dessus, nous utilisons la fonction array_reduce pour convertir le tableau à deux dimensions en un tableau à une dimension. La fonction array_search trouve la valeur cible dans le tableau à une dimension et calcule la ligne. somme de la valeur cible dans la liste à deux dimensions.

La complexité temporelle de cette méthode est de $O(n)$ Par rapport à la méthode traditionnelle, les performances ont été grandement améliorées.

  1. Résumé

Cet article présente une méthode efficace qui permet de trouver la valeur clé d'un tableau bidimensionnel en une seule boucle. En utilisant certaines fonctions de tableau fournies par PHP, nous avons réduit la complexité temporelle de $O(n^2)$ à $O(n)$, améliorant considérablement les performances du programme. J'espère que cet article sera utile pour parcourir et rechercher des tableaux bidimensionnels en PHP.

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!

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