2011-09-23 103 views
1
$sortPattern= array(1,2,8,4); 
$toSort = array(2,4,8,18,16,26); 

现在,我们必须根据$sortPattern排序$toSort阵列。阵列使用阵列排序

我们应该有结果

$result = array(2,8,4,18,16,26); 

有谁知道函数要做到这一点,或者我们应该有我们自己写的函数来执行呢?

+1

嗯......我看不到的格局如何与最终的排序顺序?但是你可以用'usort()'按你想要的顺序排序。 – Spudley

+0

请稍微指定您的排序模式的语法,但不清楚它应该表达什么。 – hakre

回答

1

是的,你必须编写自己的排序功能,并将其与usort()一起使用。在你的回调,你会做这样的事情:

if ($a == $b) { 
    return 0; 
} elseif (array_search($a, $sortPattern) < array_search($b, $sortPattern) { 
    return -1; 
} else { 
    return 1; 
} 
+0

不要处理a和/或b不在排序模式中的情况。 –

0

$sortPattern$toSort什么样的影响?

看起来可能:

$result = array_merge(
    array_intersect($sortPattern, $toSort), // 2, 8, 4 
    array_diff($toSort, $sortPattern)  // 18, 16, 26 
);