複数桁の数値を、数の小さい順に並び替える、お勧めの方法を教えて下さい。
例 : 42315 → 12345
例 : 84519 → 14589
宜しくお願いします。
第一感がtezcelloさんと同じだったのでサンプルを書いてみました。
5桁の整数を生成する処理はphp7で使用できるrandom_intを使っていますがそのほかはphp5以上であれば使用可能です。
//対象の数を生成 $num_target = random_int(0,99999); print $num_target; //生成された数を一桁ごとに文字(文字列)として分割 $num_array = str_split($num_target); //対象を数としてソート sort($num_array,SORT_NUMERIC); //ソートされた配列を文字列として結合後整数に変換 $num_result = (int)implode($num_array); print " " . $num_result . "\n";
なお数値中に0が入っていたときに並び替えた結果がどうなっていてほしいのか、によって最後の処理が微妙に異なります。たとえば56040という数値が与えられたときに表示される結果が
とするのがよいと思われます。
ちなみにphp以外の言語で文字の処理が不得意な言語では
という古典的な方法をとることもあります。もしphpで書くなら
となります。
2017/01/01 07:44:46が、こちらの方法だとphpでは回答で示した方法よりかなり遅いので参考程度にしてください。
ありがとうございます。
2017/01/02 22:30:27とても参考になります。
使うとしましたら、こちらを使う予定です。
00456となる、だと$num_result = implode($num_array);