如何检查PHP数组是关联的还是顺序的?

PHP将所有数组视为关联数组,因此没有任何内置函数。有人能推荐一种相当有效的方法来检查数组是否只包含数字键吗

基本上,我希望能够区分这两种情况:

$sequentialArray=[
‘苹果’、‘橘子’、‘西红柿’、‘胡萝卜’
];

这是:

$assocArray=[
“水果1”=>“苹果”,
“水果2”=>“橙色”,
“veg1”=>“西红柿”,
“veg2”=>“胡萝卜”
];

您提出了两个不完全相同的问题:

  • 首先,如何确定数组是否只有数字键
  • 其次,如何从0开始确定数组是否具有顺序键

考虑一下您实际需要哪些行为。(可能这两种方法都适用于您的目的。)

第一个问题(简单地检查所有的钥匙是否都是数字)由kurO船长回答得很好

对于第二个问题(检查数组是否为零索引和顺序),可以使用以下函数:

函数isAssoc(数组$arr)
{
if(array()==$arr)返回false;
返回数组_键($arr)!==范围(0,计数($arr)-1);
}
变量转储(isAssoc(['a','b','c']);//错误的
变量转储(isAssoc([“0”=>'a',“1”=>'b',“2”=>'c']);//错误的
变量转储(isAssoc([“1”=>'a',“0”=>'b',“2”=>'c']);//符合事实的
变量转储(isAssoc([“a”=>'a',“b”=>'b',“c”=>'c']);//符合事实的

发表评论