Dans PHP, Array_Chunk () est une fonction de tableau très courante. Il peut diviser un tableau en plusieurs petits tableaux, et le nombre d'éléments dans chaque petit tableau est spécifié par l'utilisateur. Cependant, pour un tableau multidimensionnel, Array_Chunk () ne divise pas les tableaux imbriqués par défaut. Il divisera le tableau le plus extérieur par le nombre d'éléments passés.
La syntaxe de array_chunk () est très simple, elle accepte les paramètres suivants:
array_chunk(array $array, int $length, bool $preserve_keys = false): array
$ Array : un tableau qui doit être divisé.
$ Longueur : le nombre d'éléments chaque petit tableau contient.
$ Preserve_keys : s'il faut préserver le nom clé du tableau d'origine. La valeur par défaut est fausse et le nom de la clé sera réindexé.
Par exemple, le code suivant divise un tableau unidimensionnel en plusieurs petits tableaux:
$array = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$result = array_chunk($array, 3);
print_r($result);
Résultat de sortie:
Array
(
[0] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[1] => Array
(
[0] => 4
[1] => 5
[2] => 6
)
[2] => Array
(
[0] => 7
[1] => 8
[2] => 9
)
)
Comme indiqué ci-dessus, Array_Chunk () divise le tableau de tableau $ en trois petits tableaux, chaque petit tableau contenant jusqu'à trois éléments.
Lorsqu'un tableau est multidimensionnel, le comportement par défaut de Array_Chunk () est de diviser uniquement le tableau le plus extérieur sans traiter récursivement les tableaux imbriqués. Si vous souhaitez nicher de partager un tableau multidimensionnel, array_chunk () ne peut pas atteindre directement cet objectif.
Supposons que nous ayons un tableau bidimensionnel, comme ceci:
$array = [
['apple', 'banana', 'cherry'],
['dog', 'elephant', 'fox'],
['grape', 'honeydew', 'kiwi']
];
Si nous utilisons array_chunk () pour diviser ce tableau bidimensionnel:
$result = array_chunk($array, 2);
print_r($result);
La sortie sera:
Array
(
[0] => Array
(
[0] => Array
(
[0] => apple
[1] => banana
[2] => cherry
)
[1] => Array
(
[0] => dog
[1] => elephant
[2] => fox
)
)
[1] => Array
(
[0] => Array
(
[0] => grape
[1] => honeydew
[2] => kiwi
)
)
)
Comme indiqué ci-dessus, lorsque Array_Chunk () partage un tableau bidimensionnel, il ne divise pas davantage le tableau imbriqué, mais divise plutôt le réseau le plus extérieur en deux petits tableau. Chaque petit tableau contient toujours un sous-réseau complet.
Pour implémenter la division récursive des tableaux multidimensionnels, nous pouvons simuler le comportement de Array_Chunk () via des fonctions récursives personnalisées. Cela peut diviser le tableau imbriqué en traversant le tableau et en appelant Array_Chunk () récursivement.
Voici un exemple de division récursive des tableaux multidimensionnels:
function recursive_array_chunk($array, $length) {
$result = [];
foreach ($array as $key => $value) {
// Si la valeur est un tableau,Fractionnement récursif
if (is_array($value)) {
$result[$key] = recursive_array_chunk($value, $length);
} else {
$result[] = $value;
}
}
return array_chunk($result, $length);
}
$array = [
['apple', 'banana', 'cherry'],
['dog', 'elephant', 'fox'],
['grape', 'honeydew', 'kiwi']
];
$result = recursive_array_chunk($array, 2);
print_r($result);
La fonction récursive_array_chunk () traite récursivement chaque couche dans un tableau multidimensionnel, réalisant ainsi la division d'un tableau multidimensionnel. Finalement, les tableaux imbriqués sont également correctement divisés.
array_chunk () par défaut pour la division des tableaux multidimensionnels ne gère que le tableau le plus extérieur, et les tableaux imbriqués ne seront pas traités récursivement.
Si vous souhaitez diviser récursivement un tableau multidimensionnel, vous avez besoin d'une fonction personnalisée pour l'implémenter.
Le tableau peut être divisé par couche par couche par récursivité pour garantir que les tableaux imbriqués dans des tableaux multidimensionnels peuvent également être divisés.
J'espère que cet article peut vous aider à comprendre l'application de Array_Chunk () dans des tableaux multidimensionnels. Si vous avez d'autres questions ou avez besoin d'une analyse plus approfondie, veuillez visiter notre site Web!