Comment PHP détermine le nombre de dimensions d'un tableau : 1. La fonction détermine les dimensions du tableau en s'appelant de manière récursive et utilise la fonction "foreach()" pour parcourir tous les éléments. Si le résultat est toujours un tableau, la dimension sera augmentée de un ; 2. Elle est implémentée en convertissant le tableau en chaîne JSON via la fonction "json_encode()", puis en utilisant des expressions régulières pour déterminer la profondeur hiérarchique de la chaîne JSON.
Le système d'exploitation de ce tutoriel : système windows10, PHP version 8.1.3, ordinateur DELL G3.
Méthodes pour déterminer le nombre de dimensions d'un tableau :
Méthode 1 : Utiliser la récursion pour déterminer les dimensions du tableau
La fonction dans l'exemple de code ci-dessous détermine les dimensions du tableau en s'appelant de manière récursive If après avoir parcouru une boucle. tous les éléments, c'est toujours un tableau, augmentez la dimension de un.
/** * 判断数组维度 * * @param array $arr * @return int */ function array_dimension($arr) { $dimension = 0; if (is_array($arr)) { foreach ($arr as $item) { if (is_array($item)) { $sub_dimension = array_dimension($item); if ($sub_dimension > $dimension) { $dimension = $sub_dimension; } } } $dimension++; } return $dimension; } // 示例数据 $arr1 = array(1, 2, 3); $arr2 = array(array(1, 2), array(3, 4)); $arr3 = array(array(array(1, 2), array(3, 4)), array(array(5, 6), array(7, 8))); echo '数组1的维度:' . array_dimension($arr1) . '<br>'; echo '数组2的维度:' . array_dimension($arr2) . '<br>'; echo '数组3的维度:' . array_dimension($arr3) . '<br>';
Le résultat de sortie du code ci-dessus :
数组1的维度:1 数组2的维度:2 数组3的维度:3
Méthode 2 : convertir au format JSON pour déterminer la dimension du tableau
La fonction dans l'exemple de code ci-dessous convertit le tableau en chaîne JSON, puis détermine la profondeur hiérarchique du JSON chaîne à travers des expressions régulières réalisées.
/** * 判断数组维度 * * @param array $arr * @return int */ function array_dimension($arr) { $json_arr = json_encode($arr, JSON_UNESCAPED_UNICODE); $max_depth = 1; if (preg_match_all('/(?:^|\{|\,)\s*(\[(?R)*\]|\{(?R)*\})\s*(?:(?=\:)|$)/', $json_arr, $m)) { foreach ($m[1] as $val) { $depth = substr_count(str_replace(["[", "{", "]", "}"], "", $val), ',') + 1; if ($depth > $max_depth) { $max_depth = $depth; } } } return $max_depth; } // 示例数据 $arr1 = array(1, 2, 3); $arr2 = array(array(1, 2), array(3, 4)); $arr3 = array(array(array(1, 2), array(3, 4)), array(array(5, 6), array(7, 8))); echo '数组1的维度:' . array_dimension($arr1) . '<br>'; echo '数组2的维度:' . array_dimension($arr2) . '<br>'; echo '数组3的维度:' . array_dimension($arr3) . '<br>';
Le résultat de sortie du code ci-dessus :
数组1的维度:1 数组2的维度:2 数组3的维度:3
Les deux méthodes ci-dessus sont couramment utilisées pour déterminer les dimensions du tableau. Elles sont relativement simples à mettre en œuvre. Vous pouvez choisir la méthode appropriée en fonction de vos propres besoins.
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!