0

価格/ID番号などで情報を並べ替えられるように、配列の並べ替えメソッドを作成したいと思います。

私の配列は次のようなものです:

[1] 1002234985, $123.00, ITEM DESCRIPTION #1

[2] 1034234985, $143.70, ITEM DESCRIPTION #2

[3] 1002467455, $133.06, ITEM DESCRIPTION #3

[4] 1564334985, $883.11, ITEM DESCRIPTION #4

配列を価格で並べ替えたいのですが、説明とID番号を一致させます。これどうやってするの?

ありがとう!

4

2 に答える 2

1

compare関数(2つの要素を受け取り、どちらが大きいかを返す)を記述し、 usortを使用して使用します

例:

$arr = array(
              array(1002234985, '125.00', 'ITEM DESCRIPTION'), 
              array(1002234986, '124.00', 'ITEM DESCRIPTION'), 
              array(1002234987, '123.00', 'ITEM DESCRIPTION')
);
function mycomp($itm1, $itm2){
    if($itm1[1] > $itm2[1]){
        return 1;
    }
    else if($itm1[1] < $itm2[1]){
        return -1;
    }
    else{
        return 0;
    }
}
usort($arr, 'mycomp');
print_r($arr);
于 2012-07-03T23:13:27.900 に答える
0

PHPのusortを使用して多次元配列をソートする例を次に示します。

// Change this to the index of the key you wish to sort by
$sortBy = 0;

$myArray = array(
  array(1002234985, '$123.00', 'ITEM DESCRIPTION #1'),
  array(1034234985, '$143.70', 'ITEM DESCRIPTION #2'),
  array(1002467455, '$133.06', 'ITEM DESCRIPTION #3'),
  array(1564334985, '$883.11', 'ITEM DESCRIPTION #4')
];

usort($myArray, 'cmp');

function cmp($a, $b){
  if ($a[$sortBy] == $b[$sortBy]) {
    return 0;
  }
  return ($a[$sortBy] < $b[$sortBy]) ? -1 : 1;
}
于 2012-07-03T23:23:29.107 に答える