按另一个数组的值对数组排序的值进行排序
问题描述:
我的数据库中有一个工作日数组(德语)。我怎样才能排序它不按字母顺序,但按照一周的顺序?按另一个数组的值对数组排序的值进行排序
$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'
)
答
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);