如何检查数组是不是为列表? [复制]
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如何检查列表中的项目是不是为浮点数,如果是,将其更改为字符串? [复制]
如何使用条件检查列表中是不是存在字符串类型的输入? [复制]