PHP 数组对象判断

在php开发中,json_encode和json_decode都是常用的方法,但是我们传入json到php中进行解析,不管是传入数组还是传入对象,在php中解析出来都是array类型,所以在做某些操作时我们可能要根据传入的json类型做不同操作就比较麻烦了,所以有了这个方法。

这样的json我们叫它数组

[1,2,3]

这样的json我们叫它对象

{"a":1,"b":2,"c":3}

但是通过getType()方法拿到的都是array类型

$a = [0, 1, 2, 3];
$b = ['a' => 0, 'b' => 1, 'c' => 3];
$c = [['a' => 1], ['b' => 2], 'c' => 3];

echo gettype($a) . ' data:' . json_encode($a,true) . PHP_EOL; // array
echo gettype($b) . ' data:' . json_encode($b,true) . PHP_EOL; // array
echo gettype($c) . ' data:' . json_encode($c,true) . PHP_EOL; // array

通过对数组索引的判断,如果是数组,那么索引一定是 0-(n-1) ,所以我们可以通过这样推断它是array还是object类型

/**
 * 判断是否对象型数组
 * @desc 例如$a = [1,2,3]; $b={'a'=>1,'b'=>2} 在php中解析出来都叫做数组,实则$b应该是对象,但是在php的getType()方法返回的类型都是array
 * @param array $array
 * @return bool
 * @author pengzhongyu
 * @datetime 2024-11-01
 */
function isArrayObject(array $array): bool
{
	return array_keys($array) !== range(0, count($array) - 1);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值