本文目录一览:
php根据json其中的一个键值大小重新排序
在php对json直接操作成本太高,所以应该将json先转化为数组,对数组排序就很好弄了,具体操作如下:
//先将json转化为数组:
$people =json_decode($people,true);
//排序方法
function my_sort($arrays,$sort_key,$sort_order=SORT_ASC,$sort_type=SORT_NUMERIC ){
if(is_array($arrays)){
foreach ($arrays as $array){
if(is_array($array)){
$key_arrays[] = $array[$sort_key];
}else{
return false;
}
}
}else{
return false;
}
array_multisort($key_arrays,$sort_order,$sort_type,$arrays);
return $arrays;
}
//测试效果
$person = array(
array('num'=1,'sex'='1'),
array('num'=2,'sex'='0'),
array('num'=3,'sex'='1'),
array('num'=4,'sex'='1'),
array('num'=5,'sex'='0'),
array('num'=6,'sex'='0'),
array('num'=7,'sex'='0')
);
var_dump($person);
$person = my_sort($person,'num',SORT_ASC,SORT_STRING);
var_dump($person);
$person = my_sort($person,'sex');
var_dump($person);
php对象转json字符串时如何排序
建议把json字符串转为关联数组再来处理和排序:
$str='{"1":1,"3":2}';
$arr=json_decode($str,true);
$arr["2"]=3;
ksort($arr,1);
$str=json_encode($arr);
print_r($str);
如果一定要按对象来处理,就这样:
$str='{"1":1,"3":2}';
$obj=json_decode($str);
$k="2";
$obj-$k=3;
$arr=json_decode(json_encode($obj),true);
ksort($arr,1);
$str=json_encode($arr);
print_r($str);
大神帮忙改下PHP输出JSON结果的顺序
两种解决方案:
一、获取数据的时候倒序排列一下,即:
$result = mysql_query('select * from address_list ORDER BY id DESC',$link);
二、获取结果后倒序排列一下,可以参考:
array_reverse()
if(mysql_num_rows($result)0){
while($obj = mysql_fetch_object($result)){
$arr[] = $obj;
}
$arr = array_reverse($arr);
echo '{"data":{ "success": true, "punit": '.json_encode($arr).'}}';
}else{
echo '{"success": false,"message":"读取数据失败","punit":""}';
}
希望能帮到你~