2016-08-30 11 views
-1

PHPでは、このような配列があります。2次元配列のキーで配列をソートする

task_chapter_nameで並べ替えが、1つの以上の条件があれば task_chapter_name値が賢明 task_nameべきでソート横その後、同じであることがある。されて私は何をしたい
$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_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_chapter_nameでソートすることでしたtask_chapter_nameに同じ値が得られる場合は、task_nameでソートする必要があります。

+0

にハングアップする前に...これをしませんでした。 – Aaron

+0

。待っている。 、 –

+3

http://stackoverflow.com/a/3233009/3355243 – Linesofcode

答えて

2
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); 
+0

返す1 :-( –

+0

@PunitGajjarこのコードを実行した後に$ task_arrayを確認してください。 – Aaron

+0

。 –

0

元の配列を最後に並べ替えて、列を抽出して並べ替えます。

array_multisort(array_column($task_array, 'task_chapter_name'), 
       array_column($task_array, 'task_name'), 
       $task_array); 

PHP> = 5.5.0がarray_column()のために必要とされるかPHP Implementation of array_column()を使用します。もちろん、あなたは別の注文を別のアレイ用SORT_ASCまたはSORT_DESCを使用することができます。それとも、ループを通過すると、上記のソートに使用するための配列を作成することができます

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