代码之家  ›  专栏  ›  技术社区  ›  Frankie

关联数组:PHP/C与Flex/Flash

  •  1
  • Frankie  · 技术社区  · 14 年前

    在PHP中,关联数组保持其顺序。

    // this will keep its order in PHP
    a['kiwis']
    a['bananas']
    a['potatoes']
    a['peaches']
    

    However in Flex it doesn't with a perfectly valid explanation . 我真的不记得C是如何处理这个问题的,但是我更倾向于相信它的工作原理和php一样,因为数组在内存中预先保留了它的空间,我们可以遍历内存。我说得对吗?

    为什么? . 为什么C/PHP对此的解释与Flash/Flex不同?Adobe让Flash以这种方式工作的主要原因是什么。

    非常感谢。

    2 回复  |  直到 7 年前
        1
  •  1
  •   Community CDub    7 年前

    对于PHP数组:这些beats是独特的构造,而且有点复杂,在slashdot的响应中给出了一个概述 Kendall Hopkins (向下滚动到他的答案):

    :PHP数组是一个链式哈希表(在键冲突上查找O(c)和O(n)) 将这两种类型放入同一哈希键空间。每个值也存储在 (链表)。它还有一个临时指针,用于保存

    在C/C++中,正如已经说过的,在核心单元中没有“关联数组”。它在STL中有一个映射(有序的),就像在新的标准库中一样( hash_map, unordered_map

    此外,“有序”C/C++映射中的元素的“顺序”通常是 “插入顺序”(在PHP中)是 键排序顺序 “或” ".

    当做

    rbo公司

        2
  •  2
  •   Jon Hanna    14 年前

    没有一个C实现,您可以根据需要滚动自己的实现,或者从已有的实现中进行选择。因此,给定的C实现可以是有序的,也可以是无序的。

    不同的人会认为点餐的好处或多或少比不点餐的好处重要。

    最大的灵活性来自于不排序,如果你也有某种排序结构(列表、链表、向量都可以),那么你可以很容易地从中创建一个排序的hashmap(不是最佳的解决方案,但很容易,所以你不能抱怨没有给你一个)。这使得它成为一个明显的选择,从设计的早期就打算成为通用的。

    历史的进程有时使这些决策成为最优的,有时又是次优的,这是任何开发人员都无法真正计划的。