如何排序json字符串?

时间:2012-02-08 16:03:01

标签: php json

我想将下面的JSON字符串解析为关联数组,按'age'字段对其进行排序,并将排序后的数组输出为HTML表格:

<?
$json='[{"name": "jesse","age": 25},{"name": "jason","age": 29},{"name": "johnson","age": 24}]';

?>

我应该使用某种json_decode打印各个值并在php中使用现有的排序功能吗?

2 个答案:

答案 0 :(得分:3)

是的,唯一的方法(我知道)是使用:

$array = json_decode( $json);
$array = array_map( $array, 'objectToArray');

// Or rather:
$array = json_decode( $json, true);

// And sort
sort( $array);

Php提供many array sorting功能,只需浏览手册。我还从this page借用了objectToArray

我想你会想要按年龄(或名字)排序,你应该使用usort

function cmp( $a, $b){
  if( !isset( $a['age']) && !isset( $b['age'])){
    return 0;
  }

  if( !isset( $a['age'])){
    return -1;
  }

  if( !isset( $b['age'])){
    return 1;
  }

  if( $a['age'] == $b['age']){
    return 0;
  }

  return (($a['age'] > $b['age']) ? 1 : -1);
}

usort( $array, 'cmp');

答案 1 :(得分:0)

你可以json_decode字符串,它将为你提供一个php数组的关联数组。从那里你可以使用php的内置排序来对你想要的密钥进行排序。