2010-09-01 43 views
2

它我的数组:排序怪阵由数

$hello = Array(
[text] => Array([name] => blabla [num] => 10) 
[sometext] => Array([name] => blabla [num] => 2) 
[anytext] => Array([name] => blabla [num] => 1) 
) 

如何这个数组由[num]排序?

应该看起来像(回声):

<ul> 
    <li>anytext</li> 
    <li>sometext</li> 
    <li>text</li> 
</ul> 

感谢。

回答

5

使用uasort()

<?php 
$hello = array(
    'text' => array('name' => 'blabla', 'num' => 10), 
    'sometext' => array('name' => 'blabla', 'num' => 2), 
    'anytext' => array('name' => 'blabla', 'num' => 1) 
); 

function sort_func($x, $y) { // our custom sorting function 
    if($x['num'] == $y['num']) 
    return 0; // zero return value means that the two are equal 
    else if($x['num'] < $y['num']) 
    return -1; // negative return value means that $x is less than $y 
    else 
    return 1; // positive return value means that $x is more than $y 
} 

uasort($hello, 'sort_func'); 

echo '<ul>'; 
foreach($hello as $key => $value) 
{ 
    echo '<li>'.htmlspecialchars($key).'</li>'; 
} 
echo '</ul>'; 
+0

它是如何工作的? – James 2010-09-01 19:08:22

+0

我已经修复它(我第一次误读你的问题..)。 – Frxstrem 2010-09-01 19:09:13

+0

@WorkingHard:'uasort()'会用两个参数调用我们的比较函数('sort_func()'),其中我们的函数比较它们并告诉'uasort()'它具有最大值。然后'uasort()'用这个排序数组。 – Frxstrem 2010-09-01 19:11:05

2

uasort是你在找什么。

function cmp($a, $b) { 
    if ($a['num'] == $b['num']) { 
     return 0; 
    } 
    return ($a['num'] < $b['num']) ? -1 : 1; 
} 

uasort($hello, 'cmp');