本文目录一览:
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_encode($arr) 为什么会改变数组的顺序,怎么解决。在线等
你这是接口吗?如果传给值的人,用的还是PHP,用asort()就可以了。如果是传到了HTML页面上,让JS处理,其实也简单。
如果要传的值,需要准确排序,那你在json_encode()之前,可以“0,1,2···”的提前排好序。如果不用的话,更简单,直接0,1,2,3···等等数字改为数组键名。
到了html页面上,for(
in
)应该就能在转值后准确应对。
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);