我有一个(xml)项目列表,每个项目都有一个类别和名称:
类别|名称
1 | Joe
2 | Carol
3 | Bruce
1 | Michael
1 | Alan
2 | Brian我想对类别中的名称进行升序排序,如下所示:
类别|名称
3 | Bruce
2 | Brian
2 | Carol
1 | Alan
1 | Joe
1 | Michael目的是在网页上创建一个选择下拉列表,将每个类别作为OptGroup,并在OptGroup中对名称进行排序。我几乎没有使用PHP的经验,我认为我需要对合并数组进行排序,但经过几个小时的尝试之后,我没有取得太大进展。非常感谢您的帮助
发布于 2014-10-01 17:28:42
$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);
?>发布于 2014-10-01 15:46:14
$name = array("Joe", "Carol", "Bruce", "Michael","Alan","Brian");
sort($name);php内置函数排序将产生期望的结果
发布于 2014-10-02 01:54:59
嗨,感谢大家的帮助,包括我在谷歌上搜索到的所有其他Stackoverflow问题,我不确定我是如何做到这一点的,有点像是无限数量的猴子,或者是新手,这里总是对我起作用的。在投稿中对名称进行升序排序
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对投稿进行排序--一个数字字段和一个名字--一个字母字段之间有区别吗?
https://stackoverflow.com/questions/26136324
复制相似问题