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 排序,因为它的速度和灵活性(在适当的地方使用 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] => 第一本书 [2] => 奇幻/恐怖 [3] => 8.9)))

书二在这里首先出现,因为在我的示例中,我将第一个索引设置为 1,值为“书二”。

于 2013-03-26T20:52:54.277 回答
1

The easiest way is to add this to your SQL statement at the end:

ORDER BY id DESC

Also if you really want to know how to do it in PHP you would do it this way:

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 回答
0

只是您需要更改您的 Select 语句。应该是这样的——

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