Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php排序合并数组_Php_Arrays_Sorting_Merge - Fatal编程技术网

php排序合并数组

php排序合并数组,php,arrays,sorting,merge,Php,Arrays,Sorting,Merge,我有一个xml项目列表,每个项目都有一个类别和一个名称: 类别|名称 我想将名称按类别升序排序,降序如下: 类别|名称 目的是在网页上创建一个选择下拉列表,将每个类别作为一个OptGroup,并在OptGroup中对名称进行排序。 我对PHP的经验很少,我认为我需要对合并数组进行排序,但在花了很多时间试图理解如何排序之后,我没有取得多大进展。 非常感谢您的帮助 $name = array("Joe", "Carol", "Bruce", "Michael","Alan","Brian"); so

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

类别|名称 我想将名称按类别升序排序,降序如下:

类别|名称 目的是在网页上创建一个选择下拉列表,将每个类别作为一个OptGroup,并在OptGroup中对名称进行排序。 我对PHP的经验很少,我认为我需要对合并数组进行排序,但在花了很多时间试图理解如何排序之后,我没有取得多大进展。 非常感谢您的帮助

$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');