PHP另类判断 - 数组是一维还是二维

之前有一个需求,需要判断一个数组是一维还是二维数组,如果是二维的话就要使用foreach循环来处理

在网上搜了一下给出来的都是下面所写的方式:

if(count($updata) == count($updata,1)) {
	// 一维
} else {
	// 二维
}

首先我要说的是,上面这种判断方法并没有错,也可以进行判断,**但是它仅仅只适用于下面这种数组:

array(
    'test' => 1,
    'ok' => 2,
    'ooo' => 3
)

上面这个数组判断一维自然是没有什么问题的。

我再举个例子,通过下面这个例子,使用上面的判断的话,就 没有办法准确判断 了:

array(
    'test' => 1,
    'ok' => 2,
    'ooo' => array(
        'ff' => 5
    ) ) 

可以看到,我只是把下面这个ooo的值改成了数组,这样的情况下,上面的判断写法就会出错,会判断这个数组是一个二维数组,很明显,这并不是我们想要的

那么我们如何规避这种情况,准确的判断出数组到底是一维数组还是二维数组,其实有个很简单的方法,按照下面的写法,就可以完美的规避,有利就有弊,性能上会稍微的下降一点,但是并没有多大影响:

$updata = array(
    'test' => 1,
    'ok' => 2,
    'ooo' => array(
        'ff' => 5
    ) 
) ;
$json = json_encode($updata); 
preg_match('#^\[.*?]$#', $json, $arr);
if ($arr) {
    echo '二维'; 
} else {
    echo '一维'; 
}

没错,就是使用正则的方式来判断,将数组转换为json后,通过正则匹配前后是否存在中括号,如果存在的话,不用想,果断输出二维数组,反之则是一维数组。

执行结果对比如下

代码如下:

在这里插入图片描述

执行结果:

很明显可以看出,使用判断1,识别出来的就是一维数组,而使用网上的方法识别出来的是二维数组
在这里插入图片描述

接下来我们改变一下数组结构( 我在数组外层加了一个array):在这里插入图片描述

看看判断结果:

在这里插入图片描述

这里的结果都是二维,是我们需要的效果

以上就是两种判断方法的对比结果

今天分享的是工作中遇到的问题解决方案,如果你有不同的解决方案,并且更高效的话,欢迎评论区讨论。

解决方案很简单,这里做一个记录,也给才入门的同学一个思路,本期分享结束,感谢观看!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sky-coder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值