在php中按值对多维数组进行排序

唠叨

我在php中有这个多维结果数组。我想按[名称]的值对该数组排序,而不使用foreach循环。请帮我。

数组必须按[名称]排序。提前致谢。

Array
 (
 [result] => Array
    (
        [projects] => Array
            (
                [0] => Array
                    (
                        [name] => Project-3
                        [releases] => Array
                            (
                                [0] => Array
                                    (
                                        [id] => 752676125
                                    )
                            )       
                    )
                [1] => Array
                    (
                        [name] => Project-1
                        [releases] => Array
                            (
                                [0] => Array
                                    (
                                        [id] => 752676126
                                    )
                             )      
                    )
                [2] => Array
                    (
                        [name] => Project-2
                        [releases] => Array
                            (
                                [0] => Array
                                    (
                                        [id] => 752676127
                                    )
                            )       
                    )
            )
    )
 )
杜申·乔希(Dushyant Joshi)

首先提取$mult_arry['result']['projects']并运行排序功能,如下所示。

<?php
function msort($array, $key, $sort_flags = SORT_REGULAR) {
    if (is_array($array) && count($array) > 0) {
        if (!empty($key)) {
            $mapping = array();
            foreach ($array as $k => $v) {
                $sort_key = '';
                if (!is_array($key)) {
                    $sort_key = $v[$key];
                } else {
                    // @TODO This should be fixed, now it will be sorted as string
                    foreach ($key as $key_key) {
                        $sort_key .= $v[$key_key];
                    }
                    $sort_flags = SORT_STRING;
                }
                $mapping[$k] = $sort_key;
            }
            asort($mapping, $sort_flags);
            $sorted = array();
            foreach ($mapping as $k => $v) {
                $sorted[] = $array[$k];
            }
            return $sorted;
        }
    }
    return $array;
}


$mult_arry=array('result'=>array('projects'=>array(
        array('name'=>'Project-3','releases'=>array(array('id' => 752676125))),
        array('name'=>'Project-1','releases'=>array(array('id' => 752676126))),
        array('name'=>'Project-2','releases'=>array(array('id' => 752676127)))
)));
$mult_arry_extracted=$mult_arry['result']['projects'];
echo "<pre>";
print_r($mult_arry_extracted);
$mult_arry_sorted_byname = msort($mult_arry_extracted, array('name'));


print_r($mult_arry_sorted_byname);
echo "</pre>";
?>

更多信息在这里

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章