2013-06-27 58 views
0

我有ID ASC这样在mysql中排序数据:如何在PHP中对数组进行排序?

注:总不能在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 
+3

你为什么不在你的mysql select中进行排序?像:select * from table name order by total,name – bitfiddler

+0

@deceze - no我认为它不是重复的 –

+0

@bitfiddler - 不,因为总数不在mysql中 –

回答

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 
+0

所以如何使名称和相同的阵列中的总像这样: $数据=阵列( “ITEM1”=> “1”, “ITEM2”=> “2”, “项目3”=> “5”, “item4”=>“3”, “item5”=>“4” ); –

+0

不,这不是我想问的问题,我想问一下如何在数组中找到名字和总数? –

+0

@Rio Eduardo对不起,我刚刚更新了我的答案,你可以创建一个这样的数组:例如'$ data [$ name] = $ total'。你可以先研究php数组。 – JunM

1

这可以(也应该)都可以从SQL查询中完成的;是这样的:

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

ORDER ING,你不能使用AS给出的名字,但你可以为了在同样的计算。

+0

但total_item不在mysql –

+0

它从哪里来?我看到你说过它在'COUNT(\'id \')',但是你删除了那条评论。那是对的吗? –

+0

yeah count(id),但total_item不在mysql中,它来自$ total_demand的总和,需求数量在表格需求中。我在表项中有3044条记录,在表需求中有60,000条记录,所以如果我使用连接表,这是不可能的,所以我更喜欢PHP中的数组而不是mysql。 –