PHP按另一个数组的值排序数组的值

时间:2017-05-01 00:16:49

标签: php arrays sorting

我的数据库中有一系列工作日(德语)。我怎么能按字母顺序排序,而是按周排序?

$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'
)

1 个答案:

答案 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);