Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.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 json在JavaScript中自动排序_Javascript_Php_Jquery_Html_Json - Fatal编程技术网

PHP json在JavaScript中自动排序

PHP json在JavaScript中自动排序,javascript,php,jquery,html,json,Javascript,Php,Jquery,Html,Json,我从PHP获取JSON,并在JavaScript中使用它来输入选择框选项值。 但是当我把我的PHP端JSON放在JavaScript中时,它会自动排序 不应该这样做 实际上,我使用这个JSON作为HTML选择框选项值 我需要来自PHP端的原始数据 JSON来自PHP端: $optionJSON= json_encode($optionValues); { "0":"Select", "37":"Abc", "47":"DEF", "359":"GHI",

我从PHP获取JSON,并在JavaScript中使用它来输入选择框选项值。 但是当我把我的PHPJSON放在JavaScript中时,它会自动排序

不应该这样做

实际上,我使用这个JSON作为HTML选择框选项值 我需要来自PHP端的原始数据

JSON来自PHP端:

$optionJSON= json_encode($optionValues);
{
    "0":"Select",
    "37":"Abc",
    "47":"DEF",
    "359":"GHI",
    "182":"JKL",
    "360":"MNO",
    "183":"PQR",
    "320":"STU",
    "38":"VWX",
    "80":"YZA"
}
PHP代码:

$optionJSON= json_encode($optionValues);
{
    "0":"Select",
    "37":"Abc",
    "47":"DEF",
    "359":"GHI",
    "182":"JKL",
    "360":"MNO",
    "183":"PQR",
    "320":"STU",
    "38":"VWX",
    "80":"YZA"
}
结果:

$optionJSON= json_encode($optionValues);
{
    "0":"Select",
    "37":"Abc",
    "47":"DEF",
    "359":"GHI",
    "182":"JKL",
    "360":"MNO",
    "183":"PQR",
    "320":"STU",
    "38":"VWX",
    "80":"YZA"
}
在浏览器控制台中显示,在选择框选项值中的顺序相同。

{
    "0": "Select",
    "37": "Abc",
    "38": "VWX",
    "47": "DEF",
    "80": "YZA",
    "182": "JKL",
    "183": "PQR",
    "320": "STU",
    "359": "GHI",
    "360": "MNO"
}

在对象实例中传递JSON对象,不能依赖元素的顺序

改用数组,或者给每个对象某种排序顺序,然后在客户端对列表进行排序

var x = [
  {"0":"Select"},
  {"37":"Abc"},
  {"47":"DEF"},
  {"359":"GHI"},
  {"38":"VWX"}
];

返回如下所示的数组:

$result = array(
    array('value' => 0, 'text' => 'Select'),
    array('value' => 37, 'text' => 'Abc'),
    array('value' => 47, 'text' => 'DEF'),
    array('value' => 359, 'text' => 'GHI'),
    array('value' => 182, 'text' => 'JKL'),
    array('value' => 360, 'text' => 'MNO'),
    array('value' => 183, 'text' => 'PQR'),
    array('value' => 320, 'text' => 'STU'),
    array('value' => 38, 'text' => 'VWX'),
    array('value' => 80, 'text' => 'YZA')
);
echo json_encode($result);
执行此操作时,输出为:

[{"value":0,"text":"Select"},{"value":37,"text":"Abc"},{"value":47,"text":"DEF"},{"value":359,"text":"GHI"},{"value":182,"text":"JKL"},{"value":360,"text":"MNO"},{"value":183,"text":"PQR"},{"value":320,"text":"STU"},{"value":38,"text":"VWX"},{"value":80,"text":"YZA"}]

当我将其复制到Javascript并使用
JSON.parse()
时,结果是按所需顺序的。参见

这不是ECMA规定的行为。您不能依赖于此浏览器的独立性。%)p未指定对象中元素的顺序,无法控制它。如果希望值保持特定顺序,请使用数组。@Barmar请给我一个示例JSON来自PHP,因此最好显示此数据的PHP语法。很抱歉,Barmar先生的问题是相同的..:(