Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menentukan Kedalaman Tatasusunan PHP Multidimensi?

Bagaimana untuk Menentukan Kedalaman Tatasusunan PHP Multidimensi?

Patricia Arquette
Patricia Arquetteasal
2024-11-08 10:59:02422semak imbas

How to Determine the Depth of a Multidimensional PHP Array?

Menentukan Kedalaman Tatasusunan PHP Berbilang Dimensi

Tatasusunan PHP boleh mengandungi tatasusunan bersarang, mewujudkan struktur hierarki yang kompleks. Menentukan kedalaman maksimum bersarang dalam tatasusunan ini boleh menjadi penting untuk analisis dan manipulasi data.

Fungsi untuk Mengira Kedalaman Tatasusunan

Satu pendekatan untuk menentukan kedalaman tatasusunan ialah dengan melintasi elemennya secara rekursif , mengira bilangan tahap. Fungsi berikut, array_depth(), mengambil tatasusunan sebagai input dan mengira kedalaman maksimumnya:

function array_depth($array) {
    $max_depth = 0;

    foreach ($array as $element) {
        if (is_array($element)) {
            $depth = $array_depth($element);
            if ($depth > $max_depth) {
                $max_depth = $depth;
            }
        }
    }

    return $max_depth + 1;
}

Dalam fungsi ini:

  • Semakan is_array() memastikan bahawa bersarang elemen diproses secara rekursif.
  • Kedalaman ditambah 1 untuk setiap tahap bersarang.
  • Nilai akhir yang dikembalikan mewakili kedalaman maksimum tatasusunan.

Pendekatan Alternatif Menggunakan print_r()

Kaedah lain mengelakkan potensi isu pengulangan tak terhingga . Ia menggunakan lekukan dalam output print_r(), yang mencerminkan struktur tatasusunan. Fungsi array_depth() di bawah menggunakan pendekatan ini:

function array_depth($array) {
    $max_indentation = 1;

    $array_str = print_r($array, true);
    $lines = explode("\n", $array_str);

    foreach ($lines as $line) {
        $indentation = (strlen($line) - strlen(ltrim($line))) / 4;

        if ($indentation > $max_indentation) {
            $max_indentation = $indentation;
        }
    }

    return ceil(($max_indentation - 1) / 2) + 1;
}
  • print_r() menukar tatasusunan menjadi rentetan dengan garis inden untuk setiap peringkat.
  • Fungsi explode() berpecah rentetan menjadi baris.
  • Lekukan untuk setiap baris dikira dan dibandingkan dengan maksimum lekukan.
  • Lekukan maksimum (dibahagikan dengan 2) mewakili kedalaman tatasusunan, kerana setiap tahap lekukan menunjukkan peningkatan kedalaman sebanyak 1.

Atas ialah kandungan terperinci Bagaimana untuk Menentukan Kedalaman Tatasusunan PHP Multidimensi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn