0

こんにちは、私は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
)

したがって、2番目の配列の最大値を持つ要素が最初の配列の最初に来て、2番目の配列の値ではなく、最初の配列の要素自体が最初の配列の最初の位置に移動するようにしたい! 2 番目に大きいものから 2 番目など. 同じ値を持つ要素は、それらがどのように配置されるかは気にしません!

私が得たい出力は

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

4 に答える 4

2

使用できますarray_multisort()

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

ドキュメントはこちら

于 2012-08-02T14:49:50.843 に答える
1

array_multisort を使用します。

http://www.php.net/manual/fr/function.array-multisort.phpを参照してください。 「例 #1 Trier plusieurs tableaux」に従ってください。

心から

于 2012-08-02T14:51:20.437 に答える
0

配列をそれぞれ$dataArrayと$sortArrayと呼びましょう

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

逆にする必要がある場合は、最後にarray_reverse()の呼び出しを追加するだけです。

于 2012-08-02T14:53:39.187 に答える
0

OPが望んでいるのは、最初の配列を2番目の配列の値でソートすることだと思います。

IE- 2 番目の配列は、最初の配列の Web ページの投票数です。

これは、最初の配列に各要素が2つの要素、Webページと投票数を持つ配列としてある場合、より簡単に解決できます

$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]);
于 2012-08-02T14:54:42.200 に答える