Home  >  Article  >  Backend Development  >  PHP如何实现二维关联数组的排序

PHP如何实现二维关联数组的排序

WBOY
WBOYOriginal
2016-06-13 11:09:26771browse

PHP怎么实现二维关联数组的排序
比如数组是这样的:

<br />  $example = array( array('b'=>7, 'rsd'=>6, 'gdd'=>3),<br />                    array('d'=>5, 'ess'=>8, 'ffs'=>5),<br />	            array('c'=>2, 'sdv'=>5, 'vfs'=>6),<br />	            array('a'=>8, 'hds'=>4, 'rfs'=>9));		<br />


不要用PHP系统函数,用uasort()或者uksort(),怎么写自定义的函数传进去?
function compare($X, $Y)
这么用uasort($example, 'compare'),
这个compare该怎么写?

不是关联型的二维数组我知道怎么写compare,
<br />  function compare($x, $y)<br />  {<br />	  if($x[0] == $y[0])<br />	    return 0;<br />	  elseif($x[0] < $y[0])<br />	    return -1;<br />	  else<br />	    return 1;<br />  }<br />

------解决方案--------------------
手册 array_multisort 
看例#4
------解决方案--------------------
Example #4 对数据库结果进行排序


 本例中 data数组中的每个单元表示一个表中的一行。这是典型的数据库记录的数据集合。 


例子中的数据如下: 


volume 
------解决方案--------------------
 edition
-------+--------
    67 
------解决方案--------------------
       2
    86 
------解决方案--------------------
       1
    85 
------解决方案--------------------
       6
    98 
------解决方案--------------------
       2
    86 
------解决方案--------------------
       6
    67 
------解决方案--------------------
       7


 数据全都存放在名为 data的数组中。这通常是通过循环从数据库取得的结果,例如 mysql_fetch_assoc()。 


$data[] = array('volume' => 67, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 1);
$data[] = array('volume' => 85, 'edition' => 6);
$data[] = array('volume' => 98, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 6);
$data[] = array('volume' => 67, 'edition' => 7);
?> 


本例中将把 volume 降序排列,把 edition 升序排列。 


现在有了包含有行的数组,但是 array_multisort()需要一个包含列的数组,因此用以下代码来取得列,然后排序。 


// 取得列的列表
foreach ($data as $key => $row) {
    $volume[$key]  = $row['volume'];
    $edition[$key] = $row['edition'];
}

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn