根据自定义条件对此数组进行排序

时间:2012-03-13 22:50:58

标签: php arrays sorting

array("name" => "",
      "uid" => "",
      "nid" => "",
      "vid" => "");

我需要这样排序:

array("nid" => "",
      "uid" => "",
      "vid" => "",
      "name" => "");

但我似乎无法弄清楚array_map,uksort()......或其他任何东西。感谢

3 个答案:

答案 0 :(得分:2)

不是那样的,但如果你只看4个键那么为什么不呢:

$newArray = array("nid" => $array["nid"], "uid" => $array["uid"], "vid" => $array["vid"], "name" => $array["name"]);

答案 1 :(得分:1)

您是否检查了function reference的uksort?

鉴于您希望按字母顺序按字母顺序按其键排序,但最后使用“name”键,即使稍后添加其他键,这也应该有效:

<?php

class MySortHelper
{
    function sort_my_array($a, $b)
    {
        if ( $a == $b ) return 0;

        if ( $a == 'name' ) return 1;
        if ( $b == 'name' ) return -1;

        return ($a > $b) ? 1 : -1;
    }
}

// ...

$my_sort_helper = new MySortHelper();
uksort($my_array, array($my_sort_helper, 'sort_my_array'));

答案 2 :(得分:0)

您可以使用uksort()

function myksort($a, $b) {
    $korder = array('nid', 'uid', 'vid', 'name');
     return (array_search($a, $korder) < array_search($b, $korder)) : -1 ? 1;
}

uksort($array, 'myksort');