0

phpを使用してデータベース内のテーブルをクエリしています。フィールドの1つは「ランク」と呼ばれる列であり、次のようなデータがあります。

none
1-bronze
2-silver
3-gold
...
10-ambassador
11-president

その「ランク」列に基づいて結果をソートできるようにしたいと思います。フィールドが「none」である結果は除外されるため、それらは考慮されません。すでに推測できるように、現在、結果は次のように返されます。

1-bronze
10-ambassador
11-president
2-silver
3-gold

もちろん、次のように並べ替えてほしいのですが。

1-bronze
2-silver
3-gold
...
10-ambassador
11-president

現在、クエリはオブジェクトとして返されています。natsort、sort、array_multisortなどのさまざまな並べ替えオプションを試しましたが、確実に機能するようにはなりませんでした。可能であれば、結果をオブジェクト形式で保持することをお勧めします。次のステップで、データをビューに渡します。ただし、オブジェクトをビューに渡してそこで作業を行うことはまったく問題ありません。結局のところ、それは問題ではありません。:)

ご協力ありがとうございました。私は理にかなっていることを望んでいます。

4

3 に答える 3

0

配列内の値を取得し、natsort()を使用してPHPで並べ替えます

ナットソート

于 2012-04-12T05:25:40.163 に答える
0

この関数を使用して並べ替えてみませんか。オブジェクトを取得している場合は、オブジェクトを配列に変換してから、これを使用する必要があると思います

function arraySubSort($array, $subkey, $sort = 'asort') 
{
  foreach($array as $key => $value) 
  {
    $temp[$key] = strtolower($value[$subkey]);
  }

  $sort($temp);
  foreach($temp as $key => $value) 
  {
    $result[] = $array[$key];
  }
  return $result;
}

$data = $your_array;
$field = 'ranks';
arraySubSort($data,$field);

割り当てたフィールドで配列を並べ替えます。複数のレコードを取得している場合は、並べ替えに使用することをお勧めします。

于 2012-04-12T06:07:06.277 に答える
0

これは機能します-

SELECT alphanumeric, integer FROM sorting_test ORDER BY LENGTH(alphanumeric), alphanumeric

ソース-MySQLの自然順

于 2012-04-12T06:16:02.033 に答える