0

私のSQLテーブルは、ID、本の名前、ジャンル、評価で構成されています。現在、SQLテーブルの配列は次のようになっています(出力)

Array ( 
   [book] => Array ( 
        [0] => Array
              ( [0] => 1 
                [1] => book one 
                [2] => Fantasy/Horror 
                [4] => 8.9 )
        [1] => Array ( 
                [0] => 2 
                [1] => book two 
                [2] => Comedy 
                [4] => 8.3 ) ) )

この配列をIDでDESCにソートしたいのですが、将来的にはタイトルでソートします。配列変数が$bookそうなので 、なんらかの理由でksort($book)試しても動作しませんか?arsortアレイのせいですか?ありがとう!

4

3 に答える 3

1

最も簡単な方法は、これを最後にSQLステートメントに追加することです。

ORDER BY id DESC

また、PHPでそれを行う方法を本当に知りたい場合は、次のようにします。

function cmp($a, $b)
{
    if ($a[0] == $b[0]) {
        return 0;
    }
    return ($a[0] > $b[0]) ? -1 : 1;
}

usort($array['book'], "cmp");
于 2013-03-26T20:39:44.617 に答える
1

可能な場合: 速度と柔軟性のため、代わりにSQLソートを使用します(適切な場合はdb-engineを使用します)本当に必要な場合にのみ配列機能を使用してください。:-)次のようなことをします:

SELECT ID,Book name,Genre, ratings ORDER BY ID DESC

また

それでも配列の並べ替えを使用する必要がある場合は、PHPでusort()を使用します。

<?php
//Book array
$bookArray['book'][0] = array(2, 'book one', 'Fantasy/Horror', 8.9);
$bookArray['book'][1] = array(1, 'book two ', 'Comedy', 8.3);

function sortByIndex($a, $b) {
    return $a[0] - $b[0];
}

usort($bookArray['book'], 'sortByIndex');


echo 'RESULT=' . print_r($bookArray,true);

?>

この出力の結果:RESULT = Array([book] => Array([0] => Array([0] => 1 [1] => book two [2] => Comedy [3] => 8.3)[ 1] =>配列([0] => 2[1]=>本1[2]=>ファンタジー/ホラー[3]=>8.9)))

ここでは、ブック2が最初に来ます。私の例では、最初のインデックスを1に設定し、値は「ブック2」であるためです。

于 2013-03-26T20:52:54.277 に答える
0

Selectステートメントを変更する必要があります。このようなものでなければなりません-

select id,bookname,genre,ratings from yourtable ORDER BY id DESC,bookname;
于 2013-03-26T20:40:46.317 に答える