アプリ版:「スタンプのみでお礼する」機能のリリースについて

初心者です。
sort 関数を使うと、どうしても以下のようになってしまい気持ち悪いです。
一郎
三郎
二郎

PHP で

一郎
二郎
三郎

と言うふうにソートすることは出来ませんか ?
分かる方おりましたら、ご教授下さい。

宜しくお願い致します。

質問者からの補足コメント

  • うーん・・・

    通常は無理ですね。

    https://seiai.ed.jp/sys/text/htm5/chp11/h11a12.php

    高校生らががんばったようですが、出来てるのかな。

    僕の環境では高校生らが使用している関数が使えないので実装できませんが、、、。

    collator_create
    collator_asort

    これらが使えれば。。。

    No.1の回答に寄せられた補足コメントです。 補足日時:2019/07/10 20:08

A 回答 (2件)

単純に "零一二三四五六七八九" だけを特例として並べ替えるなら、


ユーザー定義の比較関数を実装しましょう。

$compare = function($a,$b){
$s = "零一二三四五六七八九";
$ai = strpos($s,$a);
$bi = strpos($s,$b);
if ($ai !== false && $bi !== false) return $ai - $bi; // 漢数字同士を比較
if ($ai !== false) return -1; // 漢数字を優先
if ($bi !== false) return +1; // 漢数字を優先
return $a - $b; // 通常の比較
};
usort($並べ替えたい配列, $compare);
    • good
    • 1
この回答へのお礼

回答頂きありがとうございます。

漢数字には良いですね。
参考にさせて頂きます。

お礼日時:2019/07/11 17:42

通常のソートだと無理だと思う。


漢数字の順番でソートされないようになっているから。
https://blog.jnito.com/entry/2014/12/03/185146
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このQ&Aを見た人がよく見るQ&A