要判断一个数组是一维、二维还是多维数组,PHP提供了多种方法,下面详细介绍几种方法实现。
要判断一个数组是一维、二维还是多维数组,PHP提供了多种方法,下面详细介绍几种方法实现。
方法一:利用递归判断数组维度
下面示例代码中的函数通过递归调用自身判断数组的维度,如果循环完所有元素后,仍然是一个数组,则将维度加一。
/**
* 判断数组维度
*
* @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中显示数组与对象的实现代码 2023-12-31
- 使用vs code编辑调试php配置的方法 2022-12-08
- php+js实现的拖动滑块验证码验证表单操作示例【附源码下载】 2023-04-20
- php+Ajax处理xml与json格式数据的方法示例 2022-12-30
- thinkphp框架类库扩展操作示例 2023-03-17
- php回调函数处理数组操作示例 2023-04-08
- PHP创建XML的方法示例【基于DOMDocument类及SimpleXMLElement类】 2023-02-13
- thinkPHP和onethink微信支付插件分享 2023-02-05
- 基于PHP实现生成随机水印图片 2023-05-03
- php递归遍历多维数组的方法 2023-12-31