LoginSignup
0
1

More than 3 years have passed since last update.

phpで文字列や数値を昇順と降順にするソートボタンを作ってみた

Last updated at Posted at 2019-09-23

近況報告

エンジニア転職成功しました。YouTubeでエンジニア転職したい方向けに情報発信しています。

独習php5.3に載っていたスタックとキューの概念と、配列の内容を並び替えるsort関数を用いて、
簡単に文字列をソートさせるプログラムを組んでみました。

入力フォームに文字を打って各ボタンを押すと値がソートされます。

phpの実行環境をお持ちの方は
コピペで使えますので参考までにどうぞ。

practicesort.php
<!-- 練習問題5.3を元にスタックとキューの概念と配列のソートを用いて値をソートさせる -->
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<form action="" method="POST">
    <?php echo "ソートさせたい文字列を入れてください(1024文字まで)"; ?>
    <br>
    <!-- 入力フォームとボタンを作成 -->
    <input type="text" name="content">
    <input type="submit" name="昇順" value="昇順ソート">
    <input type="submit" name="降順" value="降順ソート">
</form>
</body>
</html>

<?php
    // 入力文字を受け取る
    $content = htmlspecialchars($_POST["content"], ENT_QUOTES, "UTF-8");
    $contentCnt = 0;

    // 入力文字を受け取った場合
    if(isset($content)){
        // 文字数を数える
        $contentCnt = mb_strlen($content);
        // 文字数が有効範囲の場合
        if(1 <= $contentCnt && $contentCnt <= 1024){
            // 文字数分カンマで区切る
            for($i = 0; $i <= $contentCnt; $i++){
                $contentStr .= mb_substr($content,$i,1).',';
            };
            // カンマの位置で配列に分割
            $contentStr = explode(',',$contentStr);
            // 昇順/降順ソートボタンを押した時
            if("昇順ソート" === $_POST['昇順']){
                // 昇順ソートする
                sort($contentStr, SORT_STRING);
                $check = "asc";
            }elseif("降順ソート" === $_POST['降順']){
                // 降順ソートする
                rsort($contentStr, SORT_STRING);
                $check = "desc";
            };
            // 配列の要素値をresultに全て格納
            foreach($contentStr as $contentSort){
                $result .= $contentSort;
            };
             // 昇順/降順ソートボタンを押した時
            switch($check){
                case "asc" :
                    print $result." <b>左記文字を昇順ソートしました</b>";
                    break;

                case "desc" :
                    print $result." <b>左記文字を降順ソートしました</b>";
                    break;
            };
        }elseif($contentCnt > 1024){
            echo "1024文字以内で入力してください。";
        }elseif($contentCnt == 0){
            echo "文字を入力してください";
        }
    }
?>
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1