2012-08-02 60 views
0

你好,我有PHPPHP排序數組沒有鑰匙

Array 
(
    [0] => red 
    [1] => blue 
    [2] => green 
    [3] => yellow 
    [4] => purple 
    [5] => white 
) 

一個數組,我想用這個數組

Array 
(
    [0] => 
    [1] => 0 
    [2] => -1 
    [3] => -5 
    [4] => -5 
    [5] => 9 
) 

來排序,所以我想用最大的價值元素在第二個數組上第一個數組不是第二個數組的值,而是第一個數組中的它自己的元素移動到第一個數組上的第一個位置!第二個更大的位置等等。具有相同價值的元素不關心我將如何安排!

我想要得到的輸出是

Array 
    (
     [0] => white 
     [1] => blue 
     [2] => green 
     [3] => yellow 
     [4] => purple 
     [5] => red 
    ) 
+0

哦sh#t。你能提供你期望的例子嗎? :D – 2012-08-02 14:48:29

+0

也許有更好的方法來做到這一點與2維陣列... – Don 2012-08-02 14:48:40

+0

你有沒有嘗試過什麼?看看['usort'](http://php.net/manual/en/function.usort.php)。 – Jon 2012-08-02 14:48:49

回答

2

您可以使用array_multisort()

$ar1 = array(/* your SO links */); 
$ar2 = array(/* your numbers */); 
array_multisort($ar2, SORT_DESC, $ar1); 

文檔here

+0

這真的很好,謝謝很多兄弟!不知道multisort! – 2012-08-02 16:24:33

0

讓我們打電話給你的陣列是$ dataArray中,和$ sortArray分別

asort($sortArray); 
foreach ($sortArray as $key=>$val) { 
    $newArray[] = $dataArray[$key]; 
} 

如果你需要它扭轉,最後加入一個對array_reverse()的調用。

0

我認爲OP想要的是按第二個數組的值排序第一個數組。

IE-第二個數組是第一個數組網頁的投票數。

這可以更簡單地加以解決,如果第一陣列中你必須每個元素作爲帶有兩個元素,網頁數組&計票

$pages = Array 
(
    array(
     'page' => 'http://stackoverflow.com/questions/640805/open-source-ios-components-reusable-views-controllers-buttons-table-cells-e', 
     'count' => 0 
     ) 
    array(
     'page' => 'http://stackoverflow.com/questions/3889634/fast-and-lean-pdf-viewer-for-iphone-ipad-ios-tips-and-hints', 
     'count' => -1 
    ) 
    // etc for the rest... 
) 

但因爲這個問題問如何做到這一點的當前數據結構:

$sorted_values = asort($pages); 

$new_pages = array(); 

$sorted_keys = array_keys($sorted_values); 

foreach($sorted_keys as $page_key) 
    array_push($new_pages, $pages[$page_key]); 
+0

沒有它的投票人這是一個情感分析工具爲我做的stackoverflow,這是總排名 – 2012-08-02 15:02:19