Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中,根据长度对多维数组进行排序_Php_Sorting - Fatal编程技术网

在PHP中,根据长度对多维数组进行排序

在PHP中,根据长度对多维数组进行排序,php,sorting,Php,Sorting,我有一个函数可以查找数组的所有可能组合: function combination($array) { $results = array(array()); foreach ($array as $element) foreach ($results as $combination) array_push($results, array_merge(array($element), $combination)); re

我有一个函数可以查找数组的所有可能组合:

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-fss-g-gss-gf-gfs-


现在我搞不懂的是,如何根据长度对组合进行排序,以使输出变成:
-gfs-gss-gf-fss-gss-f-

您需要使用“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);
} );

没错,但我不是在尝试对$set进行排序,我是在尝试对combination($set)进行排序。只需将combination($set)的结果保存在一个变量中-我为您编辑了示例您的脚本使用一维数组,combination($set)是多维数组吗?您可以发布多维数组的数组结构吗?排序后的数组必须保持多维还是一维?为此,基本上只需将strlen()更改为count()——这样它甚至可以保持多维。我会在中编辑它。看看这个链接。。。