I ont une fonction qui doit accepter un tableau de points, ou un réseau de matrice de points (a 2 ou 3 matrice bidimensionnelle). Je suis à la recherche d'un moyen fiable de détecter si elle a 2 ou 3 niveaux. La chose est, je ne peux pas compter sur les clés des tableaux pour faire la vérification, cette coutume travail:Comment calculer correctement le nombre de niveaux dans un tableau?
$levels = isset($array[0][0]) && is_array($array[0][0]) ? 3 : 2;
..as la première clé pourrait ne pas être 0. Il est généralement, mais je ne Je ne veux pas compter sur ça. Et de toute façon, c'est une façon minable et étroite de le faire. Idéalement, je voudrais vérifier un certain nombre de niveaux sans avoir à boucle à travers le réseau entier.
Voici ce que les tableaux pourraient ressembler:
array(5) {
[2] => array(2) {
[x] => 3
[y] => 6
}
[3] => array(2) {
[x] => 4
[y] => 8
}
...
Et un tableau à trois dimensions contiendrait ces tableaux.
Quelques notes:
- Les tableaux sont grandes, si une boucle complètement à travers les tableaux ne sont pas une très bonne option
- Les tableaux sont numériquement et séquentiellement indexés (à l'exception du dernier niveau, qui a x et y)
- Les clés du tableau peuvent ou non partir de 0
Tout en écrivant cela, je suis venu avec une solution qui pourrait être réalisable; une fonction récursive qui vérifie le premier élément d'un tableau, si elle est, puis s'appeler sur le tableau nouvellement trouvé etc.
Existe-t-il des meilleures idées, plus propres? Les points de bonus pour supporter des tableaux qui pourraient avoir les deux valeurs scalaires et les tableaux (par ex. le premier élément d'un tableau peut être une chaîne, mais suivant est un tableau).
Je ne pense pas qu'il y ait un autre moyen, car le tableau PHP est implémenté en tant qu'arbre et non en tant que tableau, donc il ne sait pas combien de "niveaux" il y a dans le tableau. –