PHP在二维数组中按键排序数组

PHP在二维数组中按键排序数组,php,arrays,sorting,multidimensional-array,Php,Arrays,Sorting,Multidimensional Array,在Php中,我有这样一个数组 $task_array = array( '0' => array('task_name' => 'tsk3','task_chapter_name' => 'chapter3'), '1' => array('task_name' => 'tsk1','task_chapter_name' => 'chapter1'), '2' => array('task_name' => 'tsk2','

在Php中,我有这样一个数组

$task_array = array(
    '0' => array('task_name' => 'tsk3','task_chapter_name' => 'chapter3'),
    '1' => array('task_name' => 'tsk1','task_chapter_name' => 'chapter1'),
    '2' => array('task_name' => 'tsk2','task_chapter_name' => 'chapter2'),
    '3' => array('task_name' => 'tsk6','task_chapter_name' => 'chapter6'),
    '4' => array('task_name' => 'tsk4','task_chapter_name' => 'chapter3'),
    '5' => array('task_name' => 'tsk6','task_chapter_name' => 'chapter4'),
    '6' => array('task_name' => 'tsk6','task_chapter_name' => 'chapter7')
);
我想做的是按
task\u chapter\u name
排序,但还有一个条件是,如果
task\u chapter\u name
值相同,那么下一次排序应该是
task\u name
明智的

所需输出

$task_array = array(
    '0' => array('task_name' => 'tsk1','task_chapter_name' => 'chapter1'),
    '1' => array('task_name' => 'tsk2','task_chapter_name' => 'chapter2'),
    '2' => array('task_name' => 'tsk3','task_chapter_name' => 'chapter3'),
    '3' => array('task_name' => 'tsk4','task_chapter_name' => 'chapter3'),
    '4' => array('task_name' => 'tsk6','task_chapter_name' => 'chapter4'),
    '5' => array('task_name' => 'tsk6','task_chapter_name' => 'chapter6'),
    '6' => array('task_name' => 'tsk6','task_chapter_name' => 'chapter7')
); 

我的问题被标记为重复,但在此我想通知您,我有多维数组的优先级排序,我的首要任务是按
task\u chapter\u name
排序,如果我在
task\u chapter\u name
中得到相同的值,那么应该使用
task\u name

进行排序,提取列并按顺序排序,最后对原始数组进行排序。显然,您可以对不同订单的不同数组使用
SORT\u ASC
SORT\u DESC

array_multisort(array_column($task_array, 'task_chapter_name'),
                array_column($task_array, 'task_name'),
                $task_array);
PHP>=5.5.0是
array\u column()所必需的,或者使用。或者,您可以循环并构建用于上述排序的数组:

foreach($task_array as $val) {
    $chap[] = $val['task_chapter_name'];
    $task[] = $val['task_name'];
}

以前做过这个。。。等等,好的。等等@帕夫林,难道你看不出我有多个键要按优先级排序吗?我的错,使用
array\u multisort
,正如Linesofcode所建议的那样。运行此代码后,它返回1:-(@PunitGajjar Check
$task\u array
)。
foreach ($task_array as $key => $row) {
    $taskChapterName[$key]  = $row['task_chapter_name'];
    $taskName[$key] = $row['task_name'];
}
array_multisort($taskChapterName, SORT_ASC, $taskName, SORT_ASC, $task_array);