在PHP中,我运行的mysql_query有一个ORDER BY子句。然后,我将迭代结果以构建一个关联数组,并将row_id作为键。
然后,我在该数组上调用json_encode并输出结果。
此页面使用AJAX加载,并在Javascript变量中定义。当我遍历这个Javascript变量时,我还会得到从mysql_query返回的顺序吗?
发布于 2010-04-22 09:22:30
cletus说的是对的,但根据我的经验,大多数浏览器都会维持这个顺序。也就是说,您应该考虑使用Array。如果在客户端收到后需要对其进行排序,只需使用JavaScript中的.sort()函数:
rows.sort(function(a, b) {
return a.row_id - b.row_id;
}尽管它看起来很好用,但对象中属性的顺序并不可靠。查看下面的许多评论以获取更多信息(比我更聪明的眼睛)。然而,这是我在自己的有限测试中用来测试行为的代码:
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中):
one
two
another此外,您可能希望确保从json_encode()获得的是所需的JSON编码类型,比如对象(使用{}大括号)而不是数组([]大括号)。您可能需要将JSON_FORCE_OBJECT传递给json_encode()以强制它。
Array的方法又是preferred)发布于 2010-04-22 09:15:52
PHP数组在保持插入顺序的属性上有些独特。Javascript本身没有关联数组。它有对象,这些对象通常用作关联数组。这些并不保证任何特定的键顺序。
为什么不把它们作为数组输出呢?这将有一个特殊的顺序。如果您想要某种键查找,那么顺序又有什么关系呢?
https://stackoverflow.com/questions/2687624
复制相似问题