0

以下のxyz
が var_dump($xyz); の出力であるとします。

array
    7399 => 
        array
            'count' => int 103
            'name' => string '2º SEMESTRE - 2012' (length=23)
    7398 => 
        array
            'count' => int 50
            'name' => string '1º SEMESTRE - 2012' (length=23)
    7397 => 
        array
            'count' => int 43
            'name' => string '2º SEMESTRE - 2011' (length=23)
    7396 => 
        array
            'count' => int 20
            'name' => string '1º SEMESTRE - 2011' (length=23)
    7395 => 
        array
            'count' => int 53
            'name' => string '2º SEMESTRE - 2010' (length=23)
    'others' => 
        array
            'name' => string 'Others' (length=6)
            'count' => int 65

この配列をcount desc、name ascでソートし、「others」要素を一番下に残します。以下のようにarray_multisortを使用しました

// Obtain a list of columns
foreach ($xyz as $key => $row) {
    $count[$key]  = $row['volume'];
    $name[$key] = $row['edition'];
}

// Sort the data with volume descending, edition ascending
// Add $data as the last parameter, to sort by the common key
array_multisort($count, SORT_DESC, $name, SORT_ASC, $xyz);

しかし失敗しました。次の警告が表示されます。

Warning: array_multisort() [function.array-multisort]: Array sizes are inconsistent

私が欲しいのはこのようなものです

array
    7399 => 
        array
            'count' => int 103
            'name' => string '2º SEMESTRE - 2012' (length=23)
    7395 => 
        array
            'count' => int 53
            'name' => string '2º SEMESTRE - 2010' (length=23)
    7398 => 
        array
            'count' => int 50
            'name' => string '1º SEMESTRE - 2012' (length=23)
    7397 => 
        array
            'count' => int 43
            'name' => string '2º SEMESTRE - 2011' (length=23)
    7396 => 
        array
            'count' => int 20
            'name' => string '1º SEMESTRE - 2011' (length=23)
    'others' => 
        array
            'name' => string 'Others' (length=6)
            'count' => int 65

助けてください。皆様、これからもよろしくお願いします!!!

4

1 に答える 1

1

この問題については、よく書かれた回答が既にあります。

function aasort (&$array, $key) {
    $sorter=array();
    $ret=array();
    reset($array);
    foreach ($array as $ii => $va) {
        $sorter[$ii]=$va[$key];
    }
    asort($sorter);
    foreach ($sorter as $ii => $va) {
        $ret[$ii]=$array[$ii];
    }
    $array=$ret;
}

したがって、カウントでソートするには、次のようにします。

aasort($your_array,"count");
于 2013-01-19T14:25:39.817 に答える