0

多次元配列をソートしたい。鍵は1本なので全く問題ありません。

$value1 = array();
foreach ($dataArray as $key => $row)
{
    $value1[$key] = $row['value_a'];
}
array_multisort($value1, SORT_ASC, $dataArray);

ここで、上記の配列を 2 つの値で並べ替え、value_a重みvalue_bvalue_a1.5 倍にします。value_a は距離 (例: 300 フィート) で、value_b は価格 (例: 450) です。状況を説明するために...

array_multisort2 つの値に基づいて配列を並べ替えることができますが、異なる重み付けはできません。

どんな助けでも大歓迎です:)

あなたの努力に感謝します!

4

1 に答える 1

1

usortこれはコールバックを受け取るので、好きな比較動作を定義できます。

あなたの場合、次のようなものです:

usort($value1, function($a, $b) {
    return $a['value_a'] * 1.5 + $a['value_b'] - $b['value_a'] * 1.5 - $b['value_b'];
});

http://www.php.net/manual/en/function.usort.php

更新: 上記のマニュアル ページには、コールバックの結果が整数に丸められるという注意事項があります。整数値を取得します)

于 2013-04-30T08:29:20.537 に答える