首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的关联数组的顺序会从PHP保持到Javascript吗?

问我的关联数组的顺序会从PHP保持到Javascript吗?
EN

Stack Overflow用户
提问于 2010-04-22 09:12:59
回答 2查看 1.3K关注 0票数 5

在PHP中,我运行的mysql_query有一个ORDER BY子句。然后,我将迭代结果以构建一个关联数组,并将row_id作为键。

然后,我在该数组上调用json_encode并输出结果。

此页面使用AJAX加载,并在Javascript变量中定义。当我遍历这个Javascript变量时,我还会得到从mysql_query返回的顺序吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-22 09:22:30

cletus说的是对的,但根据我的经验,大多数浏览器都会维持这个顺序。也就是说,您应该考虑使用Array。如果在客户端收到后需要对其进行排序,只需使用JavaScript中的.sort()函数:

代码语言:javascript
复制
rows.sort(function(a, b) {
    return a.row_id - b.row_id;
}

尽管它看起来很好用,但对象中属性的顺序并不可靠。查看下面的许多评论以获取更多信息(比我更聪明的眼睛)。然而,这是我在自己的有限测试中用来测试行为的代码:

代码语言:javascript
复制
var test = {
    one: 'blah',
    two: 'foo',
    another: 'bar'
};

for (prop in test) {
    document.write(prop + "<br />");
}

打印(在Firefox 3.6.3和Chrome 5.0.375.9中):

代码语言:javascript
复制
one
two
another

此外,您可能希望确保从json_encode()获得的是所需的JSON编码类型,比如对象(使用{}大括号)而不是数组([]大括号)。您可能需要将JSON_FORCE_OBJECT传递给json_encode()以强制它。

  • 编辑澄清说,Array的方法又是preferred)
  • Edited (抱歉),因为我忽略了
    • 的评论,该评论有一个链接到Chromium的问题跟踪器中关于这一问题的链接。可以说,对象属性的顺序是不可靠的。
票数 5
EN

Stack Overflow用户

发布于 2010-04-22 09:15:52

PHP数组在保持插入顺序的属性上有些独特。Javascript本身没有关联数组。它有对象,这些对象通常用作关联数组。这些并不保证任何特定的键顺序。

为什么不把它们作为数组输出呢?这将有一个特殊的顺序。如果您想要某种键查找,那么顺序又有什么关系呢?

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2687624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档