我有一个像这样的数组
Q1 2017
Q3 2017
Q3 2012
Q4 2015
Q4 2017
Q2 2017
Q =一年中的季度
我想对此数组进行排序,如下所示
Q2 2012
Q4 2015
Q1 2017
Q2 2017
Q3 2017
Q4 2017
排序是按年度进行的,但每年都按季度排序。可能吗?如果是,那么如何?
答案 0 :(得分:0)
我试着理解你的问题。希望这有帮助。
$arr = array (
array ('Q1',2017),
array ('Q3',2017),
array ('Q3',2012),
array ('Q4',2015),
array ('Q4',2017),
array ('Q2',2017),
);
$new = array();
foreach($arr as $subarr){
$new[$subarr[1]][] = $subarr[0];
sort($new[$subarr[1]]);
}
ksort($new);
$finalarr = array();
foreach($new as $key => $val){
foreach($val as $k=>$v){
$finalarr[] = array($v, $key);
}
}
echo "<pre>"; print_r($finalarr);
Web Testing with JMeter: How To Properly Handle Embedded Resources in HTML Responses
更新:根据您的评论,以下是更新后的代码:
$arr =
array ('Q1 2017'=>'some value', 'Q3 2017'=>'some value', 'Q3 2012'=>'some value', 'Q4 2015'=>'some value', 'Q4 2017'=>'some value', 'Q2 2017'=>'some value');
$new = array();
foreach($arr as $key=>$subarr){
$tempArr = explode(' ', $key);
$new[$tempArr[1]][$tempArr[0]] = $subarr;
asort($new[$tempArr[1]]);
}
ksort($new);
$secondarr = array();
foreach($new as $k=>$v){
ksort($v);
$secondarr[$k] = $v;
}
foreach($secondarr as $key => $val){
foreach($val as $k=>$v){
$newkey = $k.' '.$key;
$finalarr[$newkey] = $v;
}
}
echo "<pre>"; print_r($finalarr);
答案 1 :(得分:0)
@Ahmad尝试usort(),如下所示:
<?php
$arr = array (
array ('Q1',2017),
array ('Q3',2017),
array ('Q3',2012),
array ('Q4',2015),
array ('Q4',2017),
array ('Q2',2017),
);
function sortArr($a, $b){
if($a[1] < $b[1]){
return -1;
}
else if($a[1] == $b[1]){
return ($a[0] < $b[0] ? -1 : 1);
}
else{
return 1;
}
}
usort($arr, "sortArr");
echo "<pre>";
print_r($arr);