2012-08-02 47 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