首页  >  文章  >  后端开发  >  php如何判断数组是几维数组

php如何判断数组是几维数组

百草
百草原创
2023-07-12 15:54:491612浏览

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