2010-09-01 44 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');