我的数据库中有一系列工作日(德语)。我怎么能按字母顺序排序,而是按周排序?
$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 :(得分: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);