Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
json_将php变量(数组)编码为javascript变量时的键顺序_Javascript_Php_Arrays_Json_Encode - Fatal编程技术网

json_将php变量(数组)编码为javascript变量时的键顺序

json_将php变量(数组)编码为javascript变量时的键顺序,javascript,php,arrays,json,encode,Javascript,Php,Arrays,Json,Encode,当尝试将php数组变量编码为javascript变量时,会出现以下问题: var duration_options = <?=json_encode($duration_options)?>; var duration_options_items = ''; $.each(duration_options,function(index, value) { if(init_act_duration == value){

当尝试将php数组变量编码为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>';
在json_编码之后,当我在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\u encode
将其映射到一个json对象

您正在观察这种行为,因为您的数组不包含整数键和顺序键。因此,
json\u encode
将其映射到一个json对象

我假设您认为json是错误的,但您没有真正检查它(有几种方法可以这样做,例如浏览器开发工具中的网络窗格)

一旦您从JavaScript解析它,它就会变成一个JavaScript对象。因此,不能保证键的顺序,因为ECMAScript规范就是这样定义对象的


如果您需要防弹命令,您需要切换到常规的数组,即使用连续的基于零的整数键。

我假定您假设JSON是错误的,但您没有真正检查它(有几种方法可以这样做,例如浏览器开发工具中的“网络”窗格)

一旦您从JavaScript解析它,它就会变成一个JavaScript对象。因此,不能保证键的顺序,因为ECMAScript规范就是这样定义对象的


如果您需要防弹命令,则需要切换到常规的数组,即使用连续的基于零的整数键。

在json_encode变为:。。。这真的是一个Javascript数组吗?请检查:-。它清楚地表明,在
json\u encode
之前,您正在对数组进行处理。请编辑问题并发布代码。不要仅仅假设PHP是坏的;-)@不一定,只需将编码的json粘贴到浏览器控制台(在我的例子中是chrome),您就会看到重新排序的版本。问题是,问题可能缺少了“当我在javascript中使用json时…”部分,十进制键无论如何没有多大意义(键等于值)。。。这真的是一个Javascript数组吗?请检查:-。它清楚地表明,在
json\u encode
之前,您正在对数组进行处理。请编辑问题并发布代码。不要仅仅假设PHP是坏的;-)@不一定,只需将编码的json粘贴到浏览器控制台(在我的例子中是chrome),您就会看到重新排序的版本。问题是,问题可能缺少了“当我在javascript中使用json时…”部分,十进制键无论如何都没有多大意义(键等于值)。我编辑了我的问题,以查看我使用json_encode php变量通过循环创建select/option下拉列表我编辑了我的问题,以查看我使用json_encode php变量通过循环创建select/option下拉列表
  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
    )