PHP dizisinde kaç boyut olduğunu belirlemek için bir yol var mı?PHP Dizisindeki Boyutların sayısını Belirle
cevap
Güzel sorun, burada a solution I stole from the PHP Manual geçerli:
function countdim($array)
{
if (is_array(reset($array)))
{
$return = countdim(reset($array)) + 1;
}
else
{
$return = 1;
}
return $return;
}
Bu tamamen doğru değil. Çünkü sadece dizilerin ilk elemanını test eder. Yani bu, sadece dizileri eşit olarak dağıttığından emin olduğunuzda beklenen sonucu verir. Değişken derinlikleri gerçekten bilmek için tüm öğeler arasında geçiş yapmanız gerekir. (Ya da belki de farkında değilim bazı çapraz traversal algoritma) –
bu deneyebilirsiniz: En prosedürel ve nesne yönelimli diller gibi
$a["one"]["two"]["three"]="1";
function count_dimension($Array, $count = 0) {
if(is_array($Array)) {
return count_dimension(current($Array), ++$count);
} else {
return $count;
}
}
print count_dimension($a);
Güzel bir, teşekkürler –
PHP doğal çok boyutlu diziler uygulamak ETMEZ - bu iç içe diziler kullanır.
Diğerleri tarafından önerilen özyinelemeli işlev dağınıktır, ancak en yakın yanıttır.
C
Bu da her bir boyut elemanlarının aynı türden değildir diziler için çalışır. Tüm öğeleri geçmek gerekebilir.
$a[0] = 1; $a[1][0] = 1; $a[2][1][0] = 1; function array_max_depth($array, $depth = 0) { $max_sub_depth = 0; foreach (array_filter($array, 'is_array') as $subarray) { $max_sub_depth = max( $max_sub_depth, array_max_depth($subarray, $depth + 1) ); } return $max_sub_depth + $depth; }
onun değil bir dizi artık o yaptığını döngü sayısını yankılanacak Bu çifte işlev $ a her dizinin son boyuta gidip edecek Some issues with jumping from one function to another in a loop in php
düzeltildi bir sınırlayıcı ile oraya | Bu kodun dezavantajı sadece yankılanıyor ve iade edilemiyor (normal şekilde).
function cc($b, $n)
{
$n++.' ';
countdim($b, $n);
}
function countdim($a, $n = 0)
{
if(is_array($a))
{
foreach($a as $b)
{
cc($b, $n);
}
}else
{
echo $n.'|';
}
}
countdim($a);
İşte
i getiri olan bir işlev yaptı, ama .. html onun bir dönüş sonra .. Ben o iş yapmak için başka yolum bilmiyorum düğmesi tıklandığında php için geri "GET" .. yüzden sadece Evi/
$max_depth_var = isset($_REQUEST['max_depth_var']) ? $_REQUEST['max_depth_var'] : 0;
?>
<form id="form01" method="GET">
<input type="hidden" name="max_depth_var" value="<?php
function cc($b, $n)
{
$n++.' ';
bb($b, $n);
}
function bb($a, $n = 0)
{
if(is_array($a))
{
foreach($a as $b)cc($b, $n);
}else
{
echo $n.', ';
};
}
bb($a); ?>">
<input type="submit" form="form01" value="Get max depth value">
</form><?php
$max_depth_var = max(explode(', ', rtrim($max_depth_var, ",")));
echo "Array's maximum dimention is $max_depth_var.";
Sadece kod yazmayın; bir açıklama sağlayın. – reformed
- 1. , bir bool dizisindeki doğru (veya yanlış) öğelerin sayısını hesaplar mı?
- 2. PHP - Dizgideki virgüllerin sayısını sayın
- 3. Temel URL'yi Belirle
- 4. php - bir açılan seçicide varsayılan değeri belirle db
- 5. PHP, DOM, XPath düğümlerinin sayısını bulma
- 6. JavaScript'teki olay sayısını nasıl tanımlarım? PHP
- 7. Bir GET PHP işlevindeki çıkışların sayısını değiştirme
- 8. R - frbs paket hatası - boyutların yanlış sayısı
- 9. Geçerli HINSTANCE'ı belirle?
- 10. Görüntüdeki kalıbı belirle
- 11. Android'de ProgressDialog öğesini belirle
- 12. C# Kod boyutunu belirle
- 13. Websocket send() bittiğinde belirle
- 14. dotnet sürümümü belirle
- 15. Gönderme/yenileme sonrasında seçili seçeneği belirle seç
- 16. sınıflandırma için rasgele ormanı belirle
- 17. Tüm alt öğelerin genişliğini belirle
- 18. İki dikdörtgenin kesişme alanını belirle
- 19. GWT CellTable - sütun genişliği belirle
- 20. Android çevirici varsayılan metni belirle
- 21. matlab dizisindeki gerçek sayıyı ayıkla
- 22. herhangi biri bana dizisindeki bu
- 23. Yakut dizisindeki boşluk% w'ye göre
- 24. Nesne dizisindeki bir öğenin değiştirilmesi
- 25. PHP PDO FetchBu sonuçlardan satır sayısını kaldırmak için bağımsız değişkenler
- 26. php içinde ücretsiz apache çocuk sayısını nasıl alabilirim?
- 27. Çapraz filtre örneğinden boyutların bir listesini nasıl alabilirim?
- 28. PIL-açılı görüntünün numpy dizisindeki hatalı öğe sayısı
- 29. imap_sort sonuç sayısını sınırlıyor mu?
- 30. SQL Server Sorgulama Boyutları Sonuçları Belirle
Olası yinelenen [ "derin" bir PHP dizidir öğrenmek için bir yolu var mı?] (http://stackoverflow.com/questions/: düğmesine $ a olarak dizinizi isim ve vurmak 262891/var-bir-bulmak-out-derin-bir-php-dizi-is-yoludur) – jeremy