首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从数组中重新排序数据?

如何从数组中重新排序数据?
EN

Stack Overflow用户
提问于 2015-11-05 21:26:37
回答 2查看 52关注 0票数 1

我只想问一下,我是否会用网站名重新排序数组中的数据?当站点名是循环时,我希望每次只显示一个数据。

例如,网站订单如下

代码语言:javascript
复制
site1
site2
site3
site4

我想要的是这个,它必须是按最高比率或最高数量订购的:

代码语言:javascript
复制
name: John Doe
site: site1
rate: 10



name: Joen Doe
site: site2
rate: 10

name: Ejon Odeo
site: Site3
rate: 9.7

name: Ejosan Odeo
site: Site4
rate: 9.5

name: John Smith
site: site1
rate: 9.3

name: Jodsen Dsoe
site: site2
rate: 8

name: Efsdjon Oddeo
site: Site3
rate: 6.3

等等..。

它会循环直到全部打印出来。

名称数组:

代码语言:javascript
复制
Array ( [0] => Array ( [name] => name here [rate] => 10 [site] => site here)
Array ( [1] => Array ( [name] => name here [rate] => 9 [site] => site here)
Array ( [2] => Array ( [name] => name here [rate] => 8 [site] => site here)
Array ( [3] => Array ( [name] => name here [rate] => 7 [site] => site here)
Array ( [4] => Array ( [name] => name here [rate] => 6 [site] => site here)
Array ( [5] => Array ( [name] => name here [rate] => 5 [site] => site here)
Array ( [6] => Array ( [name] => name here [rate] => 5 [site] => site here)

start 我希望在数组中的每个站点名称中只显示一个人,当到达站点数组时,它将在exs站点名中再次启动,直到person数组全部显示为止。

代码语言:javascript
复制
Array ( [0] => Array ( [acronym] => exs [site_order] => 1 ) [1] => Array ( [acronym] => ts [site_order] => 1 ) [2] => Array ( [acronym] => ih [site_order] => 2 ) [3] => Array ( [acronym] => tp [site_order] => 3 ) [4] => Array ( [acronym] => tc [site_order] => 4 ) [5] => Array ( [acronym] => cfnm [site_order] => 5 ) [6] => Array ( [acronym] => sn [site_order] => 6 ) [7] => Array ( [acronym] => tla [site_order] => 7 ) [8] => Array ( [acronym] => bsc [site_order] => 8 ) [9] => Array ( [acronym] => tdp [site_order] => 9 ) [10] => Array ( [acronym] => lhd [site_order] => 10 ) [11] => Array ( [acronym] => ss [site_order] => 11 ) [12] => Array ( [acronym] => pov [site_order] => 12 ) [13] => Array ( [acronym] => rat [site_order] => 13 ) [14] => Array ( [acronym] => trw [site_order] => 14 ) [15] => Array ( [acronym] => tgs [site_order] => 15 ) [16] => Array ( [acronym] => tlm [site_order] => 16 ) [17] => Array ( [acronym] => ol [site_order] => 17 ) [18] => Array ( [acronym] => tb [site_order] => 18 ) [19] => Array ( [acronym] => ta [site_order] => 19 ) [20] => Array ( [acronym] => hfy [site_order] => 20 ) [21] => Array ( [acronym] => sd [site_order] => 21 ) [22] => Array ( [acronym] => si [site_order] => 22 ) [23] => Array ( [acronym] => tse [site_order] => 23 ) ) 

站点数组中的首字母缩写是站点名称。伙计们,请帮帮我

EN

回答 2

Stack Overflow用户

发布于 2015-11-05 21:42:59

看看usort http://php.net/manual/en/function.usort.php

代码语言:javascript
复制
<?php

// your example array
$data = array(
    0 => array('name' => 'name 1', 'rate' => 1, 'site' => 'site 8'),
    1 => array('name' => 'name 2', 'rate' => 2, 'site' => 'site 9'),
    2 => array('name' => 'name 3', 'rate' => 4, 'site' => 'site 10'),
    3 => array('name' => 'name 4', 'rate' => 3, 'site' => 'site 11'),
    4 => array('name' => 'name 5', 'rate' => 6, 'site' => 'site 12'),
    5 => array('name' => 'name 6', 'rate' => 7, 'site' => 'site 13'),
    6 => array('name' => 'name 7', 'rate' => 5, 'site' => 'site 14')
);

// sort array with user defined function, see below
usort($data, 'sortByRate');

// now you can walk through the array and print it
foreach ($data as $item) {
    echo 'name: '.$item['name'].'<br>';
    echo 'site: '.$item['site'].'<br>';
    echo 'rate: '.$item['rate'].'<br>';
    echo '<br>';
}


// function wich sorts the array
function sortByRate($a, $b) {
    if ($a['rate'] == $b['rate']) {
        return 0;
    }
    return ($a['rate'] > $b['rate']) ? -1 : 1;
}
票数 1
EN

Stack Overflow用户

发布于 2015-11-05 21:33:23

如果我正确理解您的问题,您希望按一个值对多维数组进行排序。This question has been asked before。对于您的具体情况,您可以这样修改代码(使用PHP5.3和更高版本,即):

代码语言:javascript
复制
usort($someArray, function($a, $b) {
    return $a['rate'] - $b['rate'];
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33555091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档