微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

基本上,我希望能够区分这个:

$sequentialArray = array('apple', 'orange', 'tomato', 'carrot');

还有这个:

$assocArray = array('fruit1' => 'apple', 
                    'fruit2' => 'orange', 
                    'veg1' => 'tomato', 
                    'veg2' => 'carrot');

解决方法:

你问过两个不完全相同的问题:

>首先,如何确定数组是否只有数字键
>其次,如何确定数组是否具有连续数字键,从0开始

考虑一下您实际需要的这些行为. (这可能是为了你的目的.)

一个问题(只是检查所有键都是数字)是answered well by Captain kurO.

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

function isAssoc(array $arr)
{
    if (array() === $arr) return false;
    return array_keys($arr) !== range(0, count($arr) - 1);
}

var_dump(isAssoc(array('a', 'b', 'c'))); // false
var_dump(isAssoc(array("0" => 'a', "1" => 'b', "2" => 'c'))); // false
var_dump(isAssoc(array("1" => 'a', "0" => 'b', "2" => 'c'))); // true
var_dump(isAssoc(array("a" => 'a', "b" => 'b', "c" => 'c'))); // true

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐