首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php排序合并数组

问php排序合并数组
EN

Stack Overflow用户
提问于 2014-10-01 15:34:47
回答 3查看 152关注 0票数 0

我有一个(xml)项目列表,每个项目都有一个类别和名称:

类别|名称

代码语言:javascript
复制
1         |  Joe
2         |  Carol
3         |  Bruce
1         |  Michael     
1         |  Alan
2         |  Brian

我想对类别中的名称进行升序排序,如下所示:

类别|名称

代码语言:javascript
复制
3         |  Bruce
2         |  Brian
2         |  Carol
1         |  Alan
1         |  Joe
1         |  Michael

目的是在网页上创建一个选择下拉列表,将每个类别作为OptGroup,并在OptGroup中对名称进行排序。我几乎没有使用PHP的经验,我认为我需要对合并数组进行排序,但经过几个小时的尝试之后,我没有取得太大进展。非常感谢您的帮助

EN

回答 3

Stack Overflow用户

发布于 2014-10-01 17:28:42

代码语言:javascript
复制
$data[] = array('category' => 1, 'name' => 'Joe');
$data[] = array('category' => 2, 'name' => 'Carol');
$data[] = array('category' => 3, 'name' => 'Bruce');
$data[] = array('category' => 1, 'name' => 'Michael');
$data[] = array('category' => 1, 'name' => 'Alan');
$data[] = array('category' => 2, 'name' => 'Brian');


<?php
// Obtain a list of columns
$category =array();
$name =array();
foreach ($data as $key => $row) {
    $category[$key]  = $row['category'];
    $name[$key] = $row['name'];
}

// Sort the data with category descending, name ascending
// Add $data as the last parameter, to sort by the common key
array_multisort($category, SORT_DESC, $name, SORT_ASC, $data);
echo '<pre>'; print_r($category);
?>
票数 1
EN

Stack Overflow用户

发布于 2014-10-01 15:46:14

代码语言:javascript
复制
$name = array("Joe", "Carol", "Bruce", "Michael","Alan","Brian");
sort($name);

php内置函数排序将产生期望的结果

票数 0
EN

Stack Overflow用户

发布于 2014-10-02 01:54:59

嗨,感谢大家的帮助,包括我在谷歌上搜索到的所有其他Stackoverflow问题,我不确定我是如何做到这一点的,有点像是无限数量的猴子,或者是新手,这里总是对我起作用的。在投稿中对名称进行升序排序

代码语言:javascript
复制
function compare($a, $b) {
    if ($a['contribution'] == $b['contribution']) {
       return ($a['name'] < $b['name']) ? -1 : 1;
    } else {
       return ($b['contribution'] - $a['contribution']);
    }
}    
usort($ads_by_cotribution, 'compare');

对我来说这一切都是魔法,这就是它的美妙之处。我没有包括名称相等的情况,因为不应该有任何相同的值,正如我所理解的,相等的值仍然会以不同的顺序在一起。我想了解这些函数是如何工作的,它们是否不断地遍历数组,直到顺序没有变化-我们过去称之为冒泡排序?($b‘贡献’-$a‘贡献’)是否表明哪个更大?Finley对投稿进行排序--一个数字字段和一个名字--一个字母字段之间有区别吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26136324

复制
相关文章

相似问题

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