[英]Will the Order of my Associative Array be maintained from PHP to Javascript?
在PHP中,我正在运行一个具有ORDER BY子句的mysql_query。 然后我迭代结果来构建一个关联数组,以row_id为关键。
然后,我在该数组上调用json_encode并输出结果。
此页面加载了AJAX,并在Javascript变量中定义。 当我遍历那个Javascript变量时,我是否仍然拥有从mysql_query返回的顺序?
PHP数组在维护插入顺序的属性方面有些独特。 Javascript本身没有关联数组。 它有对象,通常用作关联数组。 这些不保证任何特定的键盘顺序。
为什么不将它们作为数组输出? 这将有一个特定的顺序。 如果您想要某种键查找,为什么订单很重要?
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
方法是首选)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.