【问题标题】:jQuery asort() or keep sorting after JSON encoding?jQuery asort() 还是在 JSON 编码后继续排序?
【发布时间】:2016-10-09 21:59:57
【问题描述】:

我有一个包含车辆品牌的 PHP 数组,如下所示:

array(
    5 => Audi,
    2 => Ford,
    1 => Opel,
    6 => Renault,
    9 => Volkswagen,
)

我通过 Ajax 获得它,将 JSON 编码的数组返回给我的 JS。 问题是,json_encoding 自动按键排序我的数组,所以我得到:

array(
    1 => Opel,
    2 => Ford,
    5 => Audi,
    6 => Renault,
    9 => Volkswagen,
)

我怎样才能保持我的数组排序?或者在 jQuery 中重新排序? 谢谢

【问题讨论】:

  • 实际的 JSON 输出是什么?假设它是一个对象,那么它不能被排序。在这种情况下,您需要使用数组。
  • 为什么不从 PHP 的第一个索引返回奥迪?为什么欧宝排名第一?
  • 这是一个转换为数组的对象。它运作良好,问题是由 json_encode() 引起的,它按键而不是按值对我的数组进行排序。第一个按 ASC 值排序(我想要的结果),但 json_encode() 按 ASC 键对其进行排序。

标签: jquery json asort


【解决方案1】:

最好用 PHP 来做。使用不维护索引关联的sort(),然后将其编码为 JSON。

如果可能,您可以使用mysqli_fetch_assoc() 将其作为关联数组返回。所以它看起来像:

Array
(
    [0] => Array
        (
            [id] => 1
            [vehicle_makes] => Opel
        )

    [1] => Array
        (
            [id] => 2
            [vehicle_makes] => Audi
        )
    ...
)

希望这能解决您的问题。

【讨论】:

  • 我忘了告诉我需要钥匙,因为它是一个 ID。
  • 所以,步骤: 1. 我有第一个数组(我想要的结果)。 2. 我对其进行了 json_encode() 3. 我对其进行了 json_decode() 并且数组现在按键而不是值排序。
  • 谢谢。不幸的是,我不能。该数组是 Web 服务调用的结果。
猜你喜欢
  • 2019-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-14
  • 1970-01-01
  • 2017-08-06
  • 1970-01-01
相关资源
最近更新 更多