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 链接问题 C++LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型
  • ¥15 求学软件的前人们指明方向🥺
  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接