2017-05-01 192 views
0

我的數據庫中有一個工作日數組(德語)。我怎樣才能排序它不按字母順序,但按照一週的順序?按另一個數組的值對數組排序的值進行排序

$daysOfWeek = array('Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa', 'So'); 
//example values here: 
$days = array('Sa', 'Di', 'Mo', 'Fr'); 

我怎樣才能在$days數組進行排序,這樣的結果是:

$days = array(
    'Mo', 
    'Di', 
    'Fr', 
    'Sa' 
) 

這並沒有爲我工作:

$daysSorted = array_merge(array_flip($daysOfWeek), $days); 

編輯:

以上數組相等:

$daysOfWeek = array('Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'); 
//example values here: 
$days = array('Sat', 'Tue', 'Mon', 'Fri'); 

$days = array(
    'Mon', 
    'Tue', 
    'Fri', 
    'Sat' 
) 

回答

0

array_intersect快捷方式是一種聰明的方法。我喜歡。我的solotion使用自定義排序功能。您的選擇

<?php 
$daysOfWeek = array('Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa', 'So'); 
$daysOfWeek = array_flip($daysOfWeek); 
//example values here: 
$days = array('Sa', 'Di', 'Mo', 'Fr'); 
usort($days, function($a, $b) use ($daysOfWeek) 
{ 
    if ($daysOfWeek[$a] === $daysOfWeek[$b]) return 0; 
    else if ($daysOfWeek[$a] < $daysOfWeek[$b]) return -1; 
    else return 1; 
}); 
var_dump($days);