Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk menentukan berapa banyak dimensi tatasusunan dalam php
Cara PHP menentukan berapa banyak dimensi tatasusunan: 1. Fungsi menentukan dimensi tatasusunan dengan memanggil dirinya secara rekursif dan menggunakan fungsi "foreach()" untuk menggelung melalui semua elemen. dimensi akan ditambah satu; 2. Ia dilaksanakan dengan menukar tatasusunan kepada rentetan JSON melalui fungsi "json_encode()", dan kemudian menggunakan ungkapan biasa untuk menentukan kedalaman hierarki rentetan JSON.
Sistem pengendalian tutorial ini: sistem windows10, versi PHP 8.1.3, komputer DELL G3.
Kaedah untuk menentukan berapa banyak dimensi tatasusunan:
Kaedah 1: Gunakan rekursi untuk menentukan dimensi tatasusunan
Fungsi dalam contoh kod di bawah menentukan dimensi tatasusunan dengan memanggil dirinya secara rekursif semua elemen, ia masih satu Array, tingkatkan dimensi dengan satu.
/** * 判断数组维度 * * @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>';
Hasil keluaran kod di atas:
数组1的维度:1 数组2的维度:2 数组3的维度:3
Kaedah 2: Tukar kepada format JSON untuk menentukan dimensi tatasusunan
Fungsi dalam contoh kod di bawah menukar tatasusunan kepada rentetan JSON, dan kemudian menentukan kedalaman hierarki JSON rentetan melalui ungkapan biasa direalisasikan.
/** * 判断数组维度 * * @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>';
Hasil keluaran kod di atas:
数组1的维度:1 数组2的维度:2 数组3的维度:3
Di atas adalah dua kaedah yang biasa digunakan untuk menentukan dimensi tatasusunan Ia agak mudah untuk dilaksanakan Anda boleh memilih kaedah yang sesuai mengikut keperluan anda sendiri.
Atas ialah kandungan terperinci Bagaimana untuk menentukan berapa banyak dimensi tatasusunan dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!