PHP数组排序?

时间:2009-05-11 07:51:49

标签: php arrays

我有以下内容?

$array1 = array();

$array2 = array($Id, $Name, $Count);

array_push($array1, $array2);

我想在$ count上对array1进行排序?

sort()ksort()不能满足我的要求?

有什么想法吗?

由于

编辑:

我正在输入身份证号码,姓名文字和姓名出现次数,所以我希望在数组顶部有最高计数的名字!!

2 个答案:

答案 0 :(得分:2)

使用uasort()对回调函数进行排序。例如:

function sort_callback($a, $b) {
    if ($a[2] == $b[2]) {
        return 0;
    }

    return ($a[2] < $b[2]) ? -1 : 1;
}

uasort($array1, 'sort_callback');

答案 1 :(得分:1)

我对你提出这个问题的方式感到有点困惑,但是你想尝试做这样的事情吗?

function order_by($data, $field_name) {

    $code = "return strnatcmp(\$a['$field_name'], \$b['$field_name']);";
    usort($data, create_function('$a,$b', $code));
    return $data;

}

所以,例如:

$array1 = array();
$array1[] = array('Id' => 1, 'Name' => 'YT', 'Count' => 30);
$array1[] = array('Id' => 2, 'Name' => 'Da5id', 'Count' => 56);
$array1[] = array('Id' => 3, 'Name' => 'Fido', 'Count' => 12);
$array1[] = array('Id' => 4, 'Name' => 'Hiro', 'Count' => 45);

echo "<pre>";
print_r($array1);
echo "</pre>";

$array2 = order_by($array1, 'Count');

echo "<pre>";
print_r($array2);
echo "</pre>";