我有一个函数可以找到数组的所有可能组合:
function combination($array)
{
$results = array(array());
foreach ($array as $element)
foreach ($results as $combination)
array_push($results, array_merge(array($element), $combination));
return $results;
}
这将返回一个多维数组并且它可以工作。
如果我尝试打印数组,我会用它:
foreach (combination($set) as $combination)
{
print join("\t", $combination) . " - ";
}
对于:$set = array('s','f','g');
输出为:- s - f - f s - g - g s - g f - g f s -
现在我无法弄清楚如何根据长度以输出变为的方式对组合进行排序:- g f s - g s - g f - f s - g - s - f -
答案 0 :(得分:3)
你需要使用'usort':
function sortByLength($a, $b) {
return count($b) - count($a);
}
$result = combination($set);
usort($result, 'sortByLength');
你也可以使用'sortByLength'作为匿名函数,而不是定义它,如果你只使用一次:
$result = combination($set);
usort($result, function($a, $b) {
return count($b) - count($a);
} );