dounue6984 2017-04-25 05:25
浏览 52
已采纳

使用键排序多维数组

Sort multi dimensional array

$list = array_sort($list, 'name', SORT_ASC);
function array_sort($array, $on, $order = SORT_ASC)
{
    $new_array      = array();
    $sortable_array = array();
    if (count($array) > 0) {
        foreach ($array as $k => $v) {
            if (is_array($v)) {
                foreach ($v as $k2 => $v2) {
                    if ($k2 == $on) {
                        $sortable_array[$k] = $v2;
                    }
                }
            } else {
                $sortable_array[$k] = $v;
            }
        }
        switch ($order) {
            case SORT_ASC:
                asort($sortable_array);
                break;
            case SORT_DESC:
                arsort($sortable_array);
                break;
        }
        foreach ($sortable_array as $k => $v) {
            $new_array[$k] = $array[$k];
        }
    }
    return $new_array;
}
//Prepare Array List
$list = array(
    array('type' => 'suite', 'name' => 'A-Name'),
    array('type' => 'suite', 'name' => 'C-Name'),
    array('type' => 'suite', 'name' => 'B-Name'),
);
$list = array_sort($list, 'name', SORT_ASC);
  • 写回答

1条回答 默认 最新

  • dor65412 2017-04-25 09:32
    关注

    I see you found a solution but just in case I'll write my answer, maybe someone finds it useful

    <?php
        $order_by = "asc";
        $list = array(
            array('type' => 'suite', 'name' => 'A-Name'),
            array('type' => 'suite', 'name' => 'C-Name'),
            array('type' => 'suite', 'name' => 'B-Name'),
        );
        usort($list, "customSort");
    
        function customSort($a, $b) {
            global $order_by;
    
            $compare = strcmp($a['name'], $b['name']);
    
            if($compare == 0) {
                return 0;
            } else if($compare > 0) {
                if($order_by == "asc") {
                    return 1;
                } else {
                    return -1;
                }
            } else if($compare < 0) {
                if($order_by == "asc") {
                    return -1;
                } else {
                    return 1;
                }
            }
        }
    
        echo "<pre>".print_r($list, true);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?