如何对JSON数据的两个不同值进行排序


How to sort 2 different values of JSON data?

请帮助我处理以下JSON数据中按降序排列"行"和按升序排列"列"的代码。

$print = '{"Table":[
{"Column":2,"Length":1,"Number":"A4","Row":12}, 
{"Column":2,"Length":1,"Number":"A3","Row":11},
{"Column":2,"Length":1,"Number":"A2","Row":9},
{"Column":2,"Length":1,"Number":"A1","Row":8},  
{"Column":3,"Length":1,"Number":"B4","Row":12},
{"Column":3,"Length":1,"Number":"B3","Row":11},
{"Column":3,"Length":1,"Number":"B2","Row":9},
{"Column":3,"Length":1,"Number":"B1","Row":8},
{"Column":4,"Length":1,"Number":"C4","Row":12},
{"Column":4,"Length":1,"Number":"C3","Row":11},  
{"Column":4,"Length":1,"Number":"C2","Row":9},
{"Column":4,"Length":1,"Number":"C1","Row":8},
{"Column":5,"Length":1,"Number":"D4","Row":12},
{"Column":5,"Length":1,"Number":"D3","Row":11},
{"Column":5,"Length":1,"Number":"D2","Row":9},
{"Column":5,"Length":1,"Number":"D1","Row":8},
{"Column":6,"Length":1,"Number":"E4","Row":12},
{"Column":6,"Length":1,"Number":"E3","Row":11},
{"Column":6,"Length":1,"Number":"E2","Row":9},
{"Column":6,"Length":1,"Number":"E1","Row":8},
{"Column":7,"Length":1,"Number":"F4","Row":12},
{"Column":7,"Length":1,"Number":"F3","Row":11},
{"Column":7"Length":1,"Number":"F2","Row":9},
{"Column":7,"Length":1,"Number":"F1","Row":8},
{"Column":8,"Length":1,"Number":"G4","Row":12},
{"Column":8,"Length":1,"Number":"G3","Row":11},
{"Column":8,"Length":1,"Number":"G2","Row":9},
{"Column":8,"Length":1,"Number":"G1","Row":8},
{"Column":9,"Length":1,"Number":"H4","Row":12},
{"Column":9,"Length":1,"Number":"H3","Row":11},
{"Column":9,"Length":1,"Number":"H2","Row":9},
{"Column":9,"Length":1,"Number":"H1","Row":8},
{"Column":10,"Length":1,"Number":"I4","Row":12},
{"Column":10,"Length":1,"Number":"I3","Row":11},
{"Column":10,"Length":1,"Number":"I2","Row":9},
{"Column":10,"Length":1,"Number":"I1","Row":8},
{"Column":11,"Length":1,"Number":"J4","Row":12},
{"Column":11,"Length":1,"Number":"J3","Row":11},
{"Column":11,"Length":1,"Number":"J2","Row":9},
{"Column":11,"Length":1,"Number":"J1","Row":8},
{"Column":12,"Length":1,"Number":"K4","Row":12},
{"Column":12,"Length":1,"Number":"K3","Row":11},
{"Column":12,"Length":1,"Number":"K2","Row":9},
{"Column":12,"Length":1,"Number":"K1","Row":8},
{"Column":13,"Length":1,"Number":"S4","Row":12},
{"Column":13,"Length":1,"Number":"S3","Row":11},
{"Column":13,"Length":1,"Number":"S5","Row":10},
{"Column":13,"Length":1,"Number":"S2","Row":9},
{"Column":13,"Length":1,"Number":"S1","Row":8}],"ResponseStatus":200,"Message":null}';

我想按"行"对元素进行分组,"行"应按降序打印,相应"行组"的"列"应按升序打印。我想休息如下。

$print = '{"Table":[
{"Column":2,"Length":1,"Number":"A4","Row":12}, 
{"Column":3,"Length":1,"Number":"B4","Row":12},
{"Column":4,"Length":1,"Number":"C4","Row":12},
{"Column":5,"Length":1,"Number":"D4","Row":12},
{"Column":6,"Length":1,"Number":"E4","Row":12},
{"Column":7,"Length":1,"Number":"F4","Row":12},
{"Column":8,"Length":1,"Number":"G4","Row":12},
{"Column":9,"Length":1,"Number":"H4","Row":12},
{"Column":10,"Length":1,"Number":"I4","Row":12},
{"Column":11,"Length":1,"Number":"J4","Row":12},
{"Column":12,"Length":1,"Number":"K4","Row":12},
{"Column":13,"Length":1,"Number":"S4","Row":12},
{"Column":2,"Length":1,"Number":"A3","Row":11},  
{"Column":3,"Length":1,"Number":"B3","Row":11},  
{"Column":4,"Length":1,"Number":"C3","Row":11},
{"Column":5,"Length":1,"Number":"D3","Row":11},
{"Column":6,"Length":1,"Number":"E3","Row":11},
{"Column":7,"Length":1,"Number":"F3","Row":11},
{"Column":8,"Length":1,"Number":"G3","Row":11},
{"Column":9,"Length":1,"Number":"H3","Row":11},
{"Column":10,"Length":1,"Number":"I3","Row":11},
{"Column":11,"Length":1,"Number":"J3","Row":11},
{"Column":12,"Length":1,"Number":"K3","Row":11},
{"Column":13,"Length":1,"Number":"S3","Row":11},
{"Column":13,"Length":1,"Number":"S5","Row":10},
{"Column":2,"Length":1,"Number":"A2","Row":9},
{"Column":3,"Length":1,"Number":"B2","Row":9},
{"Column":4,"Length":1,"Number":"C2","Row":9},
{"Column":5,"Length":1,"Number":"D2","Row":9},
{"Column":6,"Length":1,"Number":"E2","Row":9},
{"Column":7"Length":1,"Number":"F2","Row":9},
{"Column":8,"Length":1,"Number":"G2","Row":9},
{"Column":9,"Length":1,"Number":"H2","Row":9},
{"Column":10,"Length":1,"Number":"I2","Row":9},
{"Column":11,"Length":1,"Number":"J2","Row":9},
{"Column":12,"Length":1,"Number":"K2","Row":9},
{"Column":13,"Length":1,"Number":"S2","Row":9},
{"Column":2,"Length":1,"Number":"A1","Row":8},  
{"Column":3,"Length":1,"Number":"B1","Row":8},
{"Column":4,"Length":1,"Number":"C1","Row":8},
{"Column":5,"Length":1,"Number":"D1","Row":8},
{"Column":6,"Length":1,"Number":"E1","Row":8},
{"Column":7,"Length":1,"Number":"F1","Row":8},
{"Column":8,"Length":1,"Number":"G1","Row":8},
{"Column":9,"Length":1,"Number":"H1","Row":8},
{"Column":10,"Length":1,"Number":"I1","Row":8},
{"Column":11,"Length":1,"Number":"J1","Row":8},
{"Column":12,"Length":1,"Number":"K1","Row":8}, 
{"Column":13,"Length":1,"Number":"S1","Row":8}],"ResponseStatus":200,"Message":null}';

请查看按降序打印的"行"和按升序打印的"列"。

我使用了以下代码,但这有助于缩短行,但"列"没有正确排序。

$json = json_decode($print, true);
usort($json['Table'], function($a, $b) { return $a['Row'] < $b['Row']; } );
$print = json_encode($json);

请帮我解决这个问题。提前谢谢。

如果行为b - a,列为a -b

usort($json['Table'], function($a, $b) {
    $diff = $b['Row'] - $a['Row'];
    if($diff) return $diff;
    return $a['Column'] - $b['Column'];
});

样本输出