使用PHP对多维数组排序

使用PHP对多维数组排序,php,Php,我的数组是这样创建的: $c3_array[$c3_count]["box"] = $box; $c3_array[$c3_count]["subseries"] = $subseries; $c3_array[$c3_count]["foldertitle"] = $foldertitle; $c3_array[$c3_count]["uri"] = $uri; 如何根据“box”ASC,然后根据“foldertitle”ASC对数组进行排序 谢谢 您可以使用usort创建自己的比较函数。下

我的数组是这样创建的:

$c3_array[$c3_count]["box"] = $box;
$c3_array[$c3_count]["subseries"] = $subseries;
$c3_array[$c3_count]["foldertitle"] = $foldertitle;
$c3_array[$c3_count]["uri"] = $uri;
如何根据“box”ASC,然后根据“foldertitle”ASC对数组进行排序


谢谢

您可以使用usort创建自己的比较函数。下面是一个简单的示例,它可能有效,也可能无效,这取决于数组中的实际值,但它至少应该让您了解情况

function mysort ($a, $b)
{
    if ($a['box'] > $b['box']) return 1;
    if ($a['box'] < $b['box']) return -1;
    if ($a['foldertitle'] > $b['foldertitle']) return 1;
    if ($a['foldertitle'] < $b['foldertitle']) return -1;
    return 0;
}

usort($c3_array, 'mysort');
函数mysort($a,$b)
{
如果($a['box]>$b['box]])返回1;
如果($a['box]<$b['box]])返回-1;
如果($a['foldertitle']>$b['foldertitle'])返回1;
如果($a['foldertitle']<$b['foldertitle'])返回-1;
返回0;
}
usort($c3_数组,'mysort');

我认为
数组\u multisort()
是您所需要的。使用检查

,如例3所示

$boxes = array();
$foldertitles = array();
foreach($c3_array as $key => $array) {
    $boxes[$key] = $array['box'];
    $foldertitles[$key] = $array['foldertitle'];
}

array_multisort($boxes, SORT_ASC, $foldertitles, SORT_ASC, $c3_array);

你所说的“基于”到底是什么意思?你想只返回box和foldertitle值吗?我想他指的是首先按“box”ASC排序,如果box的值大于1,则按“foldertitle”排序……不,我想返回数组的所有值,刚才按box值排序,然后最好按文件夹标题排序。