【问题标题】: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 list


【解决方案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);
猜你喜欢
  • 2011-07-02
  • 1970-01-01
  • 2012-06-17
  • 2013-05-30
  • 2014-09-23
  • 2010-12-16
  • 2016-03-24
  • 2020-05-14
相关资源
最近更新 更多