【问题标题】:PHP: Sort JSON data by keysPHP:按键对 JSON 数据进行排序
【发布时间】:2014-07-16 05:28:51
【问题描述】:

我想使用 PHP 按字母顺序对单行 JSON 数据进行排序。所以最后:

{"one":"morning","two":"afternoon","three":"evening","four":"night"}

变成:

{"four":"night","one":"morning","three":"evening","two":"afternoon"}

我尝试使用ksort 无济于事:

$icons = json_decode(file_get_contents("icons.json"));
ksort($icons);
foreach($icons as $icon => $code){...}

【问题讨论】:

  • 能贴出你使用的PHP代码吗?
  • 你先打电话给json_decode()了吗?
  • $arr = json_decode($yourJSONString); ksort($arr);
  • 您是否对数组进行了 var_dump 以查看它是否已正确读取?

标签: php json sorting


【解决方案1】:

ksort 适用于数组,而不适用于字符串:

$array = json_decode($json, true);
ksort($array);
echo json_encode($array);  

【讨论】:

  • 完美;需要加上“真”!伙计们干杯!
  • 如果这解决了您的问题,您可以接受答案。 @deceze,这些要点应该交给你:-)
  • 这个方法可以用于嵌套数据吗?也就是说,按其键对每一层嵌套进行排序?
【解决方案2】:

为了使用ksort,您首先必须使用以下方法将json转换为PHP数组:

// the true argument specifies that it needs to be converted into a PHP array
$array = json_encode($your_json, true);

然后在该数组上应用ksort

最后json_encode 再次以 json 格式返回结果。

【讨论】:

    【解决方案3】:

    这边这边:

    var dataArr = [];
    for (value in oldData) {
        var tmp = oldData[key];
        dataArr.push(parseInt(key)tmp});
    }
    
    dataArr.sort(function(a, b){
        if (a.word < b.word) return -1;
        if (b.word < a.word) return 1;
        return 0;
    });
    

    现在在 dataArr 中你有你的排序数据

    【讨论】:

      猜你喜欢
      • 2012-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-10
      • 2014-07-09
      • 1970-01-01
      • 1970-01-01
      • 2018-07-05
      相关资源
      最近更新 更多