如何在PHP中排序数组?

时间:2013-06-27 05:52:08

标签: php arrays

我有这样的数据在mysql排序中由id ASC:

注意:总数不在mysql中,总数来自价格* total_item - >例如

     id       name         total
    ----   -----------   ----------
     1        item1          3
     2        item2          5
     3        item3          1
     4        item4          2
     5        item5          4

我想在php中对它进行排序

首先,我将总数排在第一位以获得最高总数

//insert total into list
for($i=0;$i<5;$i++){
  $total_list[] = $total;
  $b = $total_list;
  rsort($b);

  //display total from highest to lowest
  echo $b[$i];
}

结果将如下:

         id       name         total
        ----   -----------   ----------
         1        item1          5
         2        item2          4
         3        item3          3
         4        item4          2
         5        item5          1

好的,我已根据上面的代码对总数进行了排序

所以为了让名字排序,我必须对它进行排序,但我已经尝试了与排序总数相同的方式,但结果却不同

不,我希望结果是这样的

         id       name         total
        ----   -----------   ----------
         1        item2          5
         2        item5          4
         3        item1          3
         4        item4          2
         5        item3          1

2 个答案:

答案 0 :(得分:1)

这可以(而且应该)都可以从SQL查询中完成;类似的东西:

SELECT `id`, `name`, `price` * `total_item` AS `total`
FROM `mytable`
ORDER BY
  `price` * `total_item` DESC,
  `id` ASC

ORDER时,您无法使用AS中提供的名称,但可以对同一计算进行排序。

答案 1 :(得分:0)

我尝试过这样的事情:使用asort

$data = array(
"item1"=>"1",
"item2"=>"2",
"item3"=>"5",
"item4"=>"3",
"item5"=>"4"
);

asort($data);

print_r($data);

Resut: Array ( [item1] => 1 [item2] => 2 [item4] => 3 [item5] => 4 [item3] => 5 )

为了获得highest total value and name,获取数组的最后一个元素。虽然您可以使用foreach来操纵名称和键。

如果我们像这样添加foreach:

foreach($data as $key=>$val){
    echo "Name:".$key."  Total:".$val."<br>";
}

Result:

Name:item1 Total:1
Name:item2 Total:2
Name:item4 Total:3
Name:item5 Total:4
Name:item3 Total:5