将 php 变量(数组)json_encode JavaScript 变量时的键排序
Key ordering when json_encode php variable (array) into javascript variable
当尝试将 php 数组变量json_encode javascript 变量时遇到问题:
var duration_options = <?=json_encode($duration_options)?>;
var duration_options_items = '';
$.each(duration_options,function(index, value) {
if(init_act_duration == value){
var selected_option = 'selected=selected';
}else{
var selected_option = '';
}
duration_options_items = duration_options_items + '<option value="'+index+'" '+selected_option+'>'+value+'</option>';
});
duration_options_items = '<select class="form-control select2 select_ajax select_ajax_duration" name="edit_activity_duration" style="width:100%">'+duration_options_items+'</select>';
PHP 数组是
Array
(
[0.5] => 0.5
[1] => 1
[1.5] => 1.5
[2] => 2
[2.5] => 2.5
[3] => 3
[3.5] => 3.5
[4] => 4
)
json_encode后,当我在javascript中使用该json时,数组如下所示:
Array
(
[1] => 1
[2] => 2
[3] => 3
[4] => 4
[0.5] => 0.5
[1.5] => 1.5
[2.5] => 2.5
[3.5] => 3.5
)
只是无法理解为什么,也不知道如何正确订购它们
您观察到此行为是因为数组不包含整数键和顺序键。因此,json_encode
将其映射到 JSON 对象。
我假设你认为JSON是错误的,但你还没有真正检查它(有几种方法可以做到这一点,例如浏览器开发人员工具中的Net窗格)。
一旦你从 JavaScript 解析它,它就变成了一个 JavaScript 对象。因此,不能保证键的顺序,因为这是 ECMAScript 规范定义对象的方式。
如果你需要防弹顺序,你需要切换到常规数组,即使用连续的从零开始的整数键。
这有什么问题,你有相同的密钥,所以你可以使用相同的密钥?似乎它按长度键排序,然后自然排序。
循环使用键时。
相关文章:
- 调用类向后变量 (JavaScript)
- 初始化父类中的变量(JavaScript/CoffeeScript 习语)
- 可以'找不到变量javascript错误
- 输出数组变量javascript
- 自提交表单访问变量javascript
- 将变量 javascript 添加到用于旋转图像的链接中
- 在文本字段中显示保存的本地存储变量 - javascript
- 将变量添加到变量 JavaScript 中
- 获取要在变量 JavaScript 中使用的用户输入值
- 如何在变量 Javascript 中删除双引号
- 使用变量 javascript 从 json 文件中获取数据
- 读取输入和打印变量 - JavaScript 和 HTML 4.01
- 传递 PHP 变量 JavaScript 窗口位置
- 重置变量 JavaScript
- 变量 JavaScript 中的变量
- 尝试使用多个函数时无法使用全局变量 - JavaScript - 初学者
- 如何按值将数组分配给另一个变量 JavaScript
- setTimout 搞砸了变量 JavaScript
- 用内部函数变量更改外部函数变量?Javascript
- 根据变量 JavaScript 增加