php排序合并数组
我有一个xml项目列表,每个项目都有一个类别和一个名称: 类别|名称 我想将名称按类别升序排序,降序如下: 类别|名称 目的是在网页上创建一个选择下拉列表,将每个类别作为一个OptGroup,并在OptGroup中对名称进行排序。 我对PHP的经验很少,我认为我需要对合并数组进行排序,但在花了很多时间试图理解如何排序之后,我没有取得多大进展。 非常感谢您的帮助php排序合并数组,php,arrays,sorting,merge,Php,Arrays,Sorting,Merge,我有一个xml项目列表,每个项目都有一个类别和一个名称: 类别|名称 我想将名称按类别升序排序,降序如下: 类别|名称 目的是在网页上创建一个选择下拉列表,将每个类别作为一个OptGroup,并在OptGroup中对名称进行排序。 我对PHP的经验很少,我认为我需要对合并数组进行排序,但在花了很多时间试图理解如何排序之后,我没有取得多大进展。 非常感谢您的帮助 $name = array("Joe", "Carol", "Bruce", "Michael","Alan","Brian"); so
$name = array("Joe", "Carol", "Bruce", "Michael","Alan","Brian");
sort($name);
php内置函数sort将产生渴望的结果嗨,感谢大家的帮助,包括我在谷歌上搜索到的所有其他Stackoverflow问题,我不确定我是如何做到的,有点像是有无数猴子的例子,或者是新手,这里是我的工作方式。
$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);
?>
将名称按升序排列,然后按降序排列
这对我来说都是魔法,这就是它的美。我没有包括姓名平等的情况
因为不应该有,而且据我所知,相等的值仍然会以不同的顺序保持在一起。我想了解这些函数是如何工作的,它们是否不断地遍历数组,直到顺序没有变化——我们过去称之为冒泡排序?$b['contribution']-$a['contribution']是否表示哪个较大?Finley排序贡献-数字字段和名称-字母字段之间有区别吗?那么这些试验在哪里?我是否为类别和名称创建单独的数组?不,您不需要将它们分开,只需从这些XML创建一个多维数组,将XML转换为数组,然后检查PHP的asort函数。至少向我们展示您迄今为止所做的尝试。名称排序的类别在哪里?我可以举一个如何将$category和$name插入数组的示例吗,谢谢这篇文章可以帮助您感谢Pankaj为您提供的时间和帮助。array_multisort发出警告:array_multisort:参数1应为数组或排序标志。这就是我在foreach循环$expld=explode\uuu$title中的内容$数据[$cnt]['category']=$expld[0]$数据[$cnt]['name']=expld[1]$cnt++;初始化$category=array$名称=数组;你至少可以相信这一点。
$name = array("Joe", "Carol", "Bruce", "Michael","Alan","Brian");
sort($name);
$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);
?>
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');