Ben puanlık bir dizi ya da puan dizinin bir dizi (2 ya da 3 boyutlu bir dizi) kabul etmek olan bir işlevi var. Ben 2 veya 3 düzeyleri olup olmadığını tespit etmek için bir güvenilir yol arıyorum. Şey kontrolünü yapmak için dizilerin tuşları saymak olamaz, bu nedenle bu wont çalışır:
$levels = isset($array[0][0]) && is_array($array[0][0]) ? 3 : 2;
.. Ilk anahtar 0 olmayabilir gibi. Genellikle, ama bu güvenmek istemiyorum. Ve neyse, bir berbat ve bunu yakın bir fikirli bir yoldur. Optimal, I düzeylerinin without tüm dizi döngü zorunda herhangi bir sayı için kontrol etmek istiyorum.
İşte diziler gibi görünebilir ne:
array(5) {
[2] => array(2) {
[x] => 3
[y] => 6
}
[3] => array(2) {
[x] => 4
[y] => 8
}
...
Ve üç boyutlu bir dizi bu dizileri içerecektir.
Bazı notlar:
- Diziler büyük, bu yüzden tamamen diziler döngü çok iyi bir seçenek değildir
- Diziler sayısal ve sırayla (x ve y olan son düzeyi istisna ile) endeksli
- Dizi anahtarları olabilir veya 0'dan başlangıç olabilir
Bunu yazarken, ben mümkün olabilecek bir çözüm ile geldi; Bu ise bir dizinin ilk öğe denetleyen bir özyinelemeli işlev, sonra vb yeni bulunan dizide kendisini aramak
Daha iyi, daha temiz fikirler var mı? Hem skalar değerler ve diziler olabilir dizileri desteklemek için bonus puan (örneğin bir dizinin ilk öğe bir dize olabilir, ancak sonraki bir dizidir).