En PHP, un tableau bidimensionnel fait référence à un tableau contenant plusieurs tableaux, c'est-à-dire que les éléments du tableau sont des tableaux, et sa forme est la suivante :
$students = array( array('id' => 1, 'name' => '张三', 'age' => 18), array('id' => 2, 'name' => '李四', 'age' => 19), array('id' => 3, 'name' => '王五', 'age' => 20), array('id' => 4, 'name' => '张三', 'age' => 18) );
Dans un tableau bidimensionnel, nous pouvons rencontrer des éléments en double . Dans ce cas, nous devons supprimer les doublons. Alors, comment perdre du poids ?
Méthode 1 : utilisez la fonction array_unique
La fonction array_unique peut supprimer les valeurs en double dans le tableau, mais elle ne peut être utilisée que pour les tableaux unidimensionnels, elle doit donc être traitée sur le tableau à deux dimensions . L'idée spécifique est la suivante :
Nous pouvons parcourir chaque sous-tableau du tableau bidimensionnel, le convertir en chaîne et l'enregistrer dans un nouveau tableau. Ensuite, le nouveau tableau est dédupliqué et le résultat final est un tableau bidimensionnel dédupliqué.
Le code est implémenté comme suit :
function unique_array($array) { $temp = array(); foreach ($array as $key => $value) { $temp[$key] = implode(',', $value); } $temp = array_unique($temp); $result = array(); foreach ($temp as $key => $value) { $result[$key] = explode(',', $value); } return $result; } $students = array( array('id' => 1, 'name' => '张三', 'age' => 18), array('id' => 2, 'name' => '李四', 'age' => 19), array('id' => 3, 'name' => '王五', 'age' => 20), array('id' => 4, 'name' => '张三', 'age' => 18) ); $result = unique_array($students); print_r($result);
Le résultat de sortie est le suivant :
Array ( [0] => Array ( [id] => 1 [name] => 张三 [age] => 18 ) [1] => Array ( [id] => 2 [name] => 李四 [age] => 19 ) [2] => Array ( [id] => 3 [name] => 王五 [age] => 20 ) )
Méthode 2 : utilisez la fonction array_reduce
La fonction array_reduce peut fusionner des tableaux bidimensionnels en tableaux unidimensionnels et effectuer des opérations de déduplication sur eux. L'idée spécifique est la suivante :
Nous pouvons d'abord convertir chaque sous-tableau du tableau bidimensionnel en une chaîne et l'enregistrer dans un nouveau tableau. Ensuite, utilisez la fonction array_reduce pour combiner les nouveaux tableaux en une chaîne et utilisez la fonction array_unique pour dédupliquer la chaîne. Enfin, utilisez la fonction d'explosion pour convertir la chaîne dédupliquée en un tableau bidimensionnel.
L'implémentation du code est la suivante :
function unique_array($array) { $temp = array(); foreach ($array as $key => $value) { $temp[$key] = implode(',', $value); } $result = array_reduce($temp, function($carry, $item){ if (!in_array($item, $carry)) { $carry[] = $item; } return $carry; }, array()); $result = array_map(function($item) { return explode(',', $item); }, $result); return $result; } $students = array( array('id' => 1, 'name' => '张三', 'age' => 18), array('id' => 2, 'name' => '李四', 'age' => 19), array('id' => 3, 'name' => '王五', 'age' => 20), array('id' => 4, 'name' => '张三', 'age' => 18) ); $result = unique_array($students); print_r($result);
Le résultat de sortie est le suivant :
Array ( [0] => Array ( [id] => 1 [name] => 张三 [age] => 18 ) [1] => Array ( [id] => 2 [name] => 李四 [age] => 19 ) [2] => Array ( [id] => 3 [name] => 王五 [age] => 20 ) )
Résumé
Ci-dessus sont les deux méthodes de déduplication de tableaux bidimensionnels en PHP. Les deux méthodes utilisent les fonctions intégrées de PHP et les idées d'implémentation spécifiques sont relativement simples. Il convient de noter que lors de l'utilisation de la fonction array_reduce, vous devez utiliser la fonction array_map pour convertir la chaîne dédupliquée en un tableau bidimensionnel.
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!