php判斷數組是幾維數組的方法:1、函數透過遞歸呼叫自身來判斷數組的維度,用「foreach()」函數來循環所有元素,結果仍然是一個數組則將維度加一;2、透過「json_encode()」函數將陣列轉換成JSON字串,然後透過正規表示式來判斷JSON字串的層級深度實現的。
本教學作業系統:windows10系統、PHP 8.1.3版本、DELL G3電腦。
判斷數組是幾維數組的方法:
方法一:利用遞歸判斷數組維度
下面範例程式碼中的函數透過遞歸調用自身判斷數組的維度,如果循環完所有元素後,仍然是數組,則維度加一。
/** * 判断数组维度 * * @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>';
上述程式碼輸出結果:
数组1的维度:1 数组2的维度:2 数组3的维度:3
方法二:轉換為JSON格式判斷陣列維度
#下面範例程式碼中的函數透過將陣列轉換為JSON字串,然後透過正規表示式判斷JSON字串的層級深度實現的。
/** * 判断数组维度 * * @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>';
上述程式碼輸出結果:
数组1的维度:1 数组2的维度:2 数组3的维度:3
以上是兩個常用的方法判斷陣列維度,實作起來都比較簡單,你可以依照自己的需求選擇適合的方法。
以上是php如何判斷數組是幾維數組的詳細內容。更多資訊請關注PHP中文網其他相關文章!