Position actuelle: Accueil> Derniers articles> Comment diviser le tableau associatif par des champs spécifiés et le traiter étape par étape en utilisant la fonction Array_Chunk de PHP?

Comment diviser le tableau associatif par des champs spécifiés et le traiter étape par étape en utilisant la fonction Array_Chunk de PHP?

M66 2025-04-28

En PHP, la fonction Array_Chunk est généralement utilisée pour diviser un tableau en plusieurs tableaux plus petits. Cependant, cette fonction ne peut être divisée qu'en fonction de la taille du tableau par défaut et ne peut pas être divisée en fonction d'un champ spécifique dans le tableau. Si nous voulons diviser le tableau associatif par le champ spécifié et traiter les données du tableau étape par étape, nous devons apporter une petite modification.

Cet article présentera comment utiliser la fonction Array_Chunk en conjonction avec d'autres techniques PHP pour diviser le tableau associatif en fonction des champs spécifiés et le traiter étape par étape.

1. Fonction de base d'utilisation de la fonction Array_Chunk

La fonction Array_Chunk est une fonction très utile dans PHP, qui peut diviser un tableau en plusieurs sous-réseaux et renvoyer un tableau multidimensionnel. La syntaxe de base est la suivante:

 array_chunk(array $array, int $size, bool $preserve_keys = false): array
  • $ Array : Le tableau à répartir.

  • $ Taille : la taille de chaque sous-réseau.

  • $ Preserve_Keys : Si défini sur true , le nom de clé du tableau est conservé; Sinon, réindexer.

Par exemple, le code suivant divise un simple tableau de nombres dans chaque sous-réseau contenant deux éléments:

 $numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$result = array_chunk($numbers, 2);
print_r($result);

Résultat de sortie:

 Array
(
    [0] => Array ( [0] => 1 [1] => 2 )
    [1] => Array ( [0] => 3 [1] => 4 )
    [2] => Array ( [0] => 5 [1] => 6 )
    [3] => Array ( [0] => 7 [1] => 8 )
    [4] => Array ( [0] => 9 )
)

2. Divisez le tableau associatif par champ

Pour les tableaux associatifs, nous voulons parfois diviser le tableau par un certain champ dans le tableau. Pour le moment, nous pouvons utiliser Array_Chunk pour diviser le tableau, mais nous devons combiner d'autres opérations pour spécifier les conditions de division.

Supposons que nous ayons un tableau associatif contenant des données utilisateur, chaque utilisateur a un champ de la ville , nous voulons diviser ces données utilisateur en plusieurs sous-réseaux en fonction du champ de la ville , chaque sous-réseau contenant des utilisateurs de la même ville.

 $users = [
    ['name' => 'Alice', 'city' => 'New York'],
    ['name' => 'Bob', 'city' => 'Los Angeles'],
    ['name' => 'Charlie', 'city' => 'New York'],
    ['name' => 'David', 'city' => 'Chicago'],
    ['name' => 'Eve', 'city' => 'Los Angeles'],
    ['name' => 'Frank', 'city' => 'Chicago']
];

Afin de diviser ces données par City Field, nous devons d'abord regrouper les utilisateurs par ville. Il peut être implémenté à l'aide de Array_reduce ou d'autres méthodes:

 $groupedByCity = [];

foreach ($users as $user) {
    $groupedByCity[$user['city']][] = $user;
}

À l'heure actuelle, la structure du tableau de byscity groupé $ sera:

 Array
(
    [New York] => Array
        (
            [0] => Array ( [name] => Alice [city] => New York )
            [1] => Array ( [name] => Charlie [city] => New York )
        )
    [Los Angeles] => Array
        (
            [0] => Array ( [name] => Bob [city] => Los Angeles )
            [1] => Array ( [name] => Eve [city] => Los Angeles )
        )
    [Chicago] => Array
        (
            [0] => Array ( [name] => David [city] => Chicago )
            [1] => Array ( [name] => Frank [city] => Chicago )
        )
)

Ensuite, nous pouvons utiliser la fonction Array_Chunk pour diviser les données utilisateur dans chaque ville en petits sous-réseaux. Par exemple, nous voulons qu'une liste d'utilisateurs de chaque ville contienne jusqu'à 2 utilisateurs:

 $chunkedByCity = [];

foreach ($groupedByCity as $city => $users) {
    $chunkedByCity[$city] = array_chunk($users, 2);
}

À l'heure actuelle, la structure du tableau $ ChunkedBycity deviendra:

 Array
(
    [New York] => Array
        (
            [0] => Array ( [name] => Alice [city] => New York )
            [1] => Array ( [name] => Charlie [city] => New York )
        )
    [Los Angeles] => Array
        (
            [0] => Array ( [name] => Bob [city] => Los Angeles )
            [1] => Array ( [name] => Eve [city] => Los Angeles )
        )
    [Chicago] => Array
        (
            [0] => Array ( [name] => David [city] => Chicago )
            [1] => Array ( [name] => Frank [city] => Chicago )
        )
)

3. Traitez progressivement les données fendues

Une fois que nous avons divisé le tableau par champ à l'aide d' Array_Chunk , nous pouvons traiter ces sous-réseaux étape par étape. Par exemple, nous pouvons traverser les données de chaque ville et effectuer certaines opérations, telles que la sortie des informations utilisateur pour chaque sous-détail:

 foreach ($chunkedByCity as $city => $chunks) {
    echo "City: $city\n";
    foreach ($chunks as $chunk) {
        echo "Users:\n";
        foreach ($chunk as $user) {
            echo "- {$user['name']}\n";
        }
    }
}

Le résultat de sortie est le suivant:

 City: New York
Users:
- Alice
- Charlie
City: Los Angeles
Users:
- Bob
- Eve
City: Chicago
Users:
- David
- Frank

4. Application pratique: Split by Field and Process URLS étape par étape

Supposons que nous ayons un tableau contenant des informations URL et que nous voulions se séparer et traiter en fonction du nom de domaine dans l'URL (tel que m66.net ). Voici un exemple simple:

 Processing URLs:
- http://m66.net/page1
- http://m66.net/page2