Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.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
Php 在客户端遍历时,AJAX服务器响应中发送的数组元素的顺序似乎发生了变化_Php_Jquery_Ajax_Json - Fatal编程技术网

Php 在客户端遍历时,AJAX服务器响应中发送的数组元素的顺序似乎发生了变化

Php 在客户端遍历时,AJAX服务器响应中发送的数组元素的顺序似乎发生了变化,php,jquery,ajax,json,Php,Jquery,Ajax,Json,我已从服务器端返回以下json响应- echo json_encode(array("result"=>"success", "networks" => $adNetworkListFinal)); 其中,$adNetworkListFinal具有以下值: Array ( [-3] => Native Test [143] => conf native template [142] => test native ) 注-索引-3是第一个。

我已从服务器端返回以下json响应-

echo json_encode(array("result"=>"success", "networks" => $adNetworkListFinal));
其中,$adNetworkListFinal具有以下值:

Array
(
    [-3] => Native Test
    [143] => conf native template
    [142] => test native
)
注-索引-3是第一个。是的,它是一个负整数索引,我必须在这里使用它

但是,在客户端,当我使用.each()遍历响应时,我得到了索引为
-3
的项,最后-

代码

$.ajax({
    type: "POST",
    url: posturl,
    data : data,
    dataType: "json",
    async: false,
    success: function(msg){


        if (msg.result == "success")
        {   
            $.each(msg.networks,function(key,val)
            {
                console.log("check "+key);                  
            });

        }
    });
输出

check 142

check 143

check -3

我不确定是什么导致了顺序的变化(最终访问了索引项-3),以及如何修复它。

数组不能有负索引,因此您正在创建一个JSON对象(因此也是一个JavaScript对象)

JSON和JavaScript对象是无序的,因此您可以按照JS引擎希望存储它们的任何顺序获取属性


由于值是数字的,您可以将它们拉入数组(作为值,而不是索引),并在使用它们访问原始对象的值之前对它们进行排序。

由于我的数组可能还包含索引-1(需要显示在末尾):D,我知道它是脏的。因此,在客户端排序在这里不是一个选项。但是你的回答在我脑海中点击了另一种方法——我认为在AJAX响应中传递另一个具有所需索引顺序(作为数组值)的数组可以解决这个问题。在客户端,我将引用这个数组来遍历原始数组。