如何检查数组是不是为列表? [复制]

Posted

技术标签:

【中文标题】如何检查数组是不是为列表? [复制]【英文标题】:How to check if array is list? [duplicate]如何检查数组是否为列表? [复制] 【发布时间】:2011-07-22 20:26:54 【问题描述】:

可能重复:php Arrays: A good way to check if an array is associative or sequential?

你好:)

我想知道检查数组是否是最短(最好)的方法是什么

列表: array('a', 'b', 'c')

或者它是一个关联数组: array('a' => 'b', 'c' => 'd')

仅供参考:我需要这个来制作自定义 json_encode 函数

【问题讨论】:

PHP Arrays: A good way to check if an array is associative or sequential? 的可能重复项为什么你需要构建一个自定义的json_encode 函数呢?您使用的 PHP 版本还没有吗?有针对这种情况的预制包。 json_encode 的实现可供下载,所以也许检查一下并自定义它们?这是一个:boutell.com/scripts/jsonwrapper.html @Pekka 我需要能够从 php 文件发送 javascript 函数 不确定你的意思,但是通过在 json_encode 结果周围包装一些 Javascript 是否可能? 【参考方案1】:
function is_assoc($array)
    return array_values($array)!==$array;

请注意,如果数组被索引但包含孔或不以 0 开头,或者键未排序,它也会返回 TRUE。我通常更喜欢使用此功能,因为它可以提供最佳性能。 作为这些情况的替代方案,我更喜欢这个(请记住,它几乎比上面慢 4 倍):

function is_assoc($array)
    return !ctype_digit( implode('', array_keys($array)) );

使用 ksort() 如 Rinuwise 评论的有点慢。

【讨论】:

请注意,如果数组键在数组中的顺序不正确,这不起作用。如果不需要,可以通过在比较之前对数组执行 ksort() 来避免。 感谢您的评论。我用这些案例改进了我的答案。 如果像“080”这样的键会出错。示例数组('0'=>1, '08'=>2);

以上是关于如何检查数组是不是为列表? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Python如何检查列表中的项目是不是为浮点数,如果是,将其更改为字符串? [复制]

检查变量是不是为列表的最佳方法是啥? [复制]

如何检查一行是不是有列表中的一个字符串? [复制]

如何使用条件检查列表中是不是存在字符串类型的输入? [复制]

如何检查 Javascript 中是不是存在字符串/数组/对象? [复制]

如何检查字符串是不是包含字母表中的所有字母? [复制]