首頁 >後端開發 >PHP問題 >php如何判斷數組是幾維數組

php如何判斷數組是幾維數組

百草
百草原創
2023-07-12 15:54:491638瀏覽

php判斷數組是幾維數組的方法:1、函數透過遞歸呼叫自身來判斷數組的維度,用「foreach()」函數來循環所有元素,結果仍然是一個數組則將維度加一;2、透過「json_encode()」函數將陣列轉換成JSON字串,然後透過正規表示式來判斷JSON字串的層級深度實現的。

php如何判斷數組是幾維數組

本教學作業系統: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 &#39;数组1的维度:&#39; . array_dimension($arr1) . &#39;<br>&#39;;
echo &#39;数组2的维度:&#39; . array_dimension($arr2) . &#39;<br>&#39;;
echo &#39;数组3的维度:&#39; . array_dimension($arr3) . &#39;<br>&#39;;

上述程式碼輸出結果:

数组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(&#39;/(?:^|\{|\,)\s*(\[(?R)*\]|\{(?R)*\})\s*(?:(?=\:)|$)/&#39;, $json_arr, $m)) {
    foreach ($m[1] as $val) {
      $depth = substr_count(str_replace(["[", "{", "]", "}"], "", $val), &#39;,&#39;) + 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 &#39;数组1的维度:&#39; . array_dimension($arr1) . &#39;<br>&#39;;
echo &#39;数组2的维度:&#39; . array_dimension($arr2) . &#39;<br>&#39;;
echo &#39;数组3的维度:&#39; . array_dimension($arr3) . &#39;<br>&#39;;

上述程式碼輸出結果:

数组1的维度:1
数组2的维度:2
数组3的维度:3

以上是兩個常用的方法判斷陣列維度,實作起來都比較簡單,你可以依照自己的需求選擇適合的方法。

以上是php如何判斷數組是幾維數組的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn