PHP排序数组使用另一个数组没有键

时间:2012-08-02 14:45:20

标签: php arrays sorting

你好我在php中有一个数组

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
    )

4 个答案:

答案 0 :(得分:2)

您可以使用array_multisort()

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

文档here

答案 1 :(得分:1)

使用array_multisort。

请参阅http://www.php.net/manual/fr/function.array-multisort.php,点击“例如#1 Trier plusieurs tableaux”

亲切

答案 2 :(得分:0)

让我们调用你的数组分别是$ dataArray和$ sortArray

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

如果需要反转,只需在最后添加对array_reverse()的调用。

答案 3 :(得分: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]);