我有下一个multidimensioanl数组(它相当长,但我在这里复制了第一个元素):
[0] => Array
(
[cpt] => Product
[tax] => Type A
[year] => 2012
)
[1] => Array
(
[cpt] => Product
[tax] => Type B
[year] => 2012
)
[2] => Array
(
[cpt] => Product
[tax] => Type C
[year] => 2011
)
[3] => Array
(
[cpt] => Product
[tax] => Type C
[year] => 2011
)
[4] => Array
(
[cpt] => Product
[tax] => Type D
[year] => 2015
)
[5] => Array
(
[cpt] => Review
[tax] => Figure
[year] => 2014
)
[6] => Array
(
[cpt] => Review
[tax] => Sample
[year] => 2012
)
[7] => Array
(
[cpt] => Review
[tax] => Figure
[year] => 2012
)
[8] => Array
(
[cpt] => Review
[tax] => Picture based
[year] => 2015
)
[9] => Array
(
[cpt] => Review
[tax] => Figure
[year] => 2012
)
[10] => Array
(
[cpt] => Review
[tax] => Picture based
[year] => 2013
)
[11] => Array
(
[cpt] => Template
[tax] => L
[year] => 2013
)
[12] => Array
(
[cpt] => Template
[tax] => L
[year] => 2015
)
[13] => Array
(
[cpt] => Template
[tax] => M
[year] => 2011
)
[14] => Array
(
[cpt] => Template
[tax] => S
[year] => 2011
)
我需要首先按“cpt”值排序,然后按“税”值排序,最后按“年”排序。
问题是“cpt”和“tax”的排序顺序应该是自定义顺序,而不是按字母顺序排列。
好消息是:
这是我的代码,但它无效,因为它也会更改“cpt”顺序。
$sort_tax = array("Sample","Figure","Picture based");
usort($the_array, function ($a, $b) use ($sort_tax) {
$pos_a = array_search($a['tax'], $sort_tax);
$pos_b = array_search($b['tax'], $sort_tax);
$result = $pos_a - $pos_b;
if ($result == 0) {
$difference = $a['year'] - $b['year'];
if ($difference >= 0) {
$value = 0;
} else {
$value = 1;
}
return $value;
} else {
return $pos_a - $pos_b;
}
});
有什么想法吗? 非常感谢提前!
答案 0 :(得分:0)
$array = array();
foreach($array_name as $arr){
$array['cpt'] = $arr['cpt'];
$array['tax'] = $arr['tax'];
$array['year'] = $arr['year'];
}
array_multisort($array['tax'], SORT_DESC, $array['year'], SORT_ASC,$Your_array_name);
您可以从here
检查array_multisort