1. 程式人生 > >php二維陣列排序多為陣列排序

php二維陣列排序多為陣列排序

<meta charset="gb2312">
<?
//author:qq:874689017
echo "二維陣列排序演示";
echo "<hr>";

 $data = array();
    $data[] = array('name'=>'張三1','yuwen' => 67, 'shuxue' => 87);
    $data[] = array('name'=>'張三2','yuwen' => 86, 'shuxue' => 91);
    $data[] = array('name'=>'張三3','yuwen' => 85, 'shuxue' => 76);
    $data[] = array('name'=>'張三4','yuwen' => 98, 'shuxue' => 62);
    $data[] = array('name'=>'張三5','yuwen' => 86, 'shuxue' => 86);
    $data[] = array('name'=>'張三6','yuwen' => 67, 'shuxue' => 76);

    // 取得列的列表
    foreach ($data as $key => $row)
    {
        $name[$key]  = $row['name'];
        $yuwen[$key] = $row['yuwen'];
        $shuxue[$key] = $row['shuxue'];
    }

    array_multisort($yuwen, SORT_DESC,$shuxue, SORT_DESC, $name, SORT_ASC, $data);
    echo "<pre>";
    print_r($data);
    echo "</pre>";
    array_multisort($yuwen, SORT_DESC, $name, SORT_ASC, $data);
    echo "<pre>";
    print_r($data);
    echo "</pre>";


     $data = array();
    $data[] = array('volume' => 67, 'edition' => 2);
    $data[] = array('volume' => 86, 'edition' => 1);
    $data[] = array('volume' => 85, 'edition' => 6);
    $data[] = array('volume' => 98, 'edition' => 2);
    $data[] = array('volume' => 86, 'edition' => 6);
    $data[] = array('volume' => 67, 'edition' => 7);
    // 取得列的列表
    foreach ($data as $key => $row)
    {
        $volume[$key]  = $row['volume'];
        $edition[$key] = $row['edition'];
    }

    $ret = arraySort($data, 'volume', 'desc');

    print_r($ret);

    /**
     * @desc arraySort php二維陣列排序 按照指定的key 對陣列進行排序
     * @param array $arr 將要排序的陣列
     * @param string $keys 指定排序的key
     * @param string $type 排序型別 asc | desc
     * @return array
     */
    function arraySort($arr, $keys, $type = 'asc') {
        $keysvalue = $new_array = array();
        foreach ($arr as $k => $v){
            $keysvalue[$k] = $v[$keys];
        }
        $type == 'asc' ? asort($keysvalue) : arsort($keysvalue);
        reset($keysvalue);
        foreach ($keysvalue as $k => $v) {
           $new_array[$k] = $arr[$k];
        }
        return $new_array;
    }

    //詳見https://www.cnblogs.com/M-D-Luffy/p/4224127.html
?>