Position actuelle: Accueil> Derniers articles> array_chunk coopère avec array_column pour diviser un tableau bidimensionnel par colonne

array_chunk coopère avec array_column pour diviser un tableau bidimensionnel par colonne

M66 2025-04-26

Dans PHP, Array_Chunk et Array_Column sont deux fonctions très utiles qui peuvent nous aider à effectuer des opérations flexibles sur les tableaux. En utilisant ces deux fonctions raisonnablement, nous pouvons facilement implémenter le fonctionnement de la division des tableaux bidimensionnels par des colonnes. Cet article présentera en détail comment combiner array_chunk et array_column pour atteindre cet objectif.

1. Comprendre Array_Chunk et Array_Column

  • Array_Column : cette fonction peut extraire la valeur d'une colonne à partir d'un tableau multidimensionnel. Son utilisation commune est d'obtenir toutes les valeurs d'une colonne spécifiée sans boucle manuellement.

     array_column(array $array, mixed $column_key, mixed $index_key = null)
    
  • array_chunk : cette fonction divise un tableau en plusieurs petits tableaux, chaque petit tableau contenant jusqu'à un nombre spécifié d'éléments. Cela permet une division efficace de grands tableaux.

     array_chunk(array $array, int $size, bool $preserve_keys = false)
    

2. Divisez la cible d'un tableau 2D par colonne

Supposons que nous ayons un tableau bidimensionnel où chaque élément contient des données pour plusieurs colonnes. Si nous voulons extraire une colonne et diviser les données de la colonne en plusieurs petits tableaux en fonction d'une certaine taille, nous pouvons utiliser une combinaison de Array_Column et Array_Chunk .

3. Exemple de code

Supposons que nous ayons le tableau bidimensionnel suivant:

 $data = [
    ['id' => 1, 'name' => 'Tom', 'age' => 28],
    ['id' => 2, 'name' => 'Jerry', 'age' => 30],
    ['id' => 3, 'name' => 'Mickey', 'age' => 25],
    ['id' => 4, 'name' => 'Donald', 'age' => 35],
    ['id' => 5, 'name' => 'Goofy', 'age' => 40],
    ['id' => 6, 'name' => 'Pluto', 'age' => 22]
];

Si nous voulons seulement extraire la colonne de nom et la diviser tous les 2 éléments, nous pouvons utiliser le code suivant:

 // extrait 'name' Liste
$names = array_column($data, 'name');

// Appuyez sur chacun 2 Split Elements
$chunkedNames = array_chunk($names, 2);

// Tableau de sortie de sortie
print_r($chunkedNames);

Résultat de sortie:

 Array
(
    [0] => Array
        (
            [0] => Tom
            [1] => Jerry
        )

    [1] => Array
        (
            [0] => Mickey
            [1] => Donald
        )

    [2] => Array
        (
            [0] => Goofy
            [1] => Pluto
        )
)

4. Utilisez Array_Chunk et Array_Column pour traiter les données complexes

Dans les applications pratiques, nous devons souvent diviser des tableaux plus complexes. Supposons que nous ayons une liste d'adresses d'URL et que nous voulions extraire la partie du nom de domaine principal de chaque URL, puis la divisez par tous les 3 noms de domaine. Supposons que les données d'origine sont les suivantes:

 $data = [
    ['url' => 'http://www.m66.net/page1', 'other' => 'data1'],
    ['url' => 'http://www.m66.net/page2', 'other' => 'data2'],
    ['url' => 'http://www.m66.net/page3', 'other' => 'data3'],
    ['url' => 'http://www.m66.net/page4', 'other' => 'data4'],
    ['url' => 'http://www.m66.net/page5', 'other' => 'data5'],
    ['url' => 'http://www.m66.net/page6', 'other' => 'data6']
];

Nous utilisons d'abord Array_Column pour extraire toutes les URL, puis utilisons la fonction PARSE_URL pour obtenir le nom de domaine principal, et nous utilisons enfin Array_Chunk pour diviser le nom de domaine en trois groupes.

 // extrait 'url' Liste
$urls = array_column($data, 'url');

// Obtenir chacun URL La partie principale du nom de domaine
$domains = array_map(function($url) {
    return parse_url($url, PHP_URL_HOST);
}, $urls);

// Appuyez sur chacun 3 Nom de domaine divisé
$chunkedDomains = array_chunk($domains, 3);

// Tableau de nom de domaine de sortie de sortie
print_r($chunkedDomains);

Résultat de sortie: