Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 按不同的值有条件地对多维数组排序_Php_Arrays_Sorting_Multidimensional Array - Fatal编程技术网

Php 按不同的值有条件地对多维数组排序

Php 按不同的值有条件地对多维数组排序,php,arrays,sorting,multidimensional-array,Php,Arrays,Sorting,Multidimensional Array,我有下一个多维OANL数组(它相当长,但我在这里复制了第一个元素): 我需要先按“cpt”值排序,然后按“税”值排序,最后按“年”排序 问题是“cpt”和“tax”的排序顺序应该是自定义顺序,而不是字母顺序 好消息是: 数组总是按“cpt”完美排序生成(如您所能 见)。所以我不在乎分类 我只需要应用这些排序更改(首先在“tax”中,然后 “年”(下一年)用于特定的“cpt”,即“审查” 这是我的代码,但它无效,因为它还更改了“cpt”顺序 $sort_tax = array("Sample"

我有下一个多维OANL数组(它相当长,但我在这里复制了第一个元素):

我需要先按“cpt”值排序,然后按“税”值排序,最后按“年”排序

问题是“cpt”和“tax”的排序顺序应该是自定义顺序,而不是字母顺序

好消息是:

  • 数组总是按“cpt”完美排序生成(如您所能 见)。所以我不在乎分类
  • 我只需要应用这些排序更改(首先在“tax”中,然后 “年”(下一年)用于特定的“cpt”,即“审查”
这是我的代码,但它无效,因为它还更改了“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;
    }
});
有什么想法吗? 非常感谢

$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);
您可以从中检查数组\u多重排序

您可以从

中检查数组_multisort,正如我在问题上所写的:问题是“cpt”和“tax”的排序顺序应该是自定义顺序,而不是字母顺序。正如我在问题上所写的:问题是“cpt”和“tax”的排序顺序应该是自定义顺序,而不是字母顺序
$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);