通过多个列[重复]

问题描述 投票:0回答:2
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

由于某种原因它不起作用? 是因为数组吗?

    
如果您能够:
由于速度和灵活性(在适当的位置使用DB引擎),因此请使用SQL排序,仅在您确实需要的情况下使用阵列功能! :-) 做类似:

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

php arrays sorting multidimensional-array
2个回答
1
投票
or

如果您仍然必须使用数组排序

,请在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); ?>

对此输出的反应: 结果= array([book] => array([0] => array([0] => 1 [1] =>书2 [2] => comedy [3] => 8.3)[1] => array ([0] => 2 [1] =>一本书[2] =>幻想/恐怖[3] => 8.9))) 书二是第一位出现的,因为在我的示例中,我将第一个索引设置为1个带有价值'book二'的索引。

最简单的方法是将其添加到您的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");

1
投票

您需要更改选择语句。应该是这样的 -
select id,bookname,genre,ratings from yourtable ORDER BY id DESC,bookname;


最新问题
© www.soinside.com 2019 - 2025. All rights reserved.