PHP

PHPアルゴリズム練習問題 (解答)

More than 1 year has passed since last update.

この記事はこちらのの問題の解答です。

PHPアルゴリズム問題

○○.php
<?php

class Tweet {
    static $tweets = array();

    function __construct($name, $post) {
        $this->name = $name;
        $this->post = $post;
    }

    static function input_tweet() {
        echo "名前を入力してください\n";
        $name = trim(fgets(STDIN));
        echo "投稿内容を入力してください\n";
        $post = trim(fgets(STDIN));

        $tweet = new Tweet($name, $post);
        Tweet::$tweets[] = $tweet;

        echo "入力が完了しました\n";
    }

    static function read_tweet() {
        if (empty(Tweet::$tweets)) {
            echo "また投稿情報が登録されていません\n";
            return;
        } else {
            $line = "---------------------------\n";
            echo "投稿者名: 投稿内容\n";
            echo $line;
            foreach (Tweet::$tweets as $tweet) {
                echo "$tweet->name : " . $tweet->post . "\n";
            }
            echo $line;
        }
    }

    static function destroy_tweet() {
        if (empty(Tweet::$tweets)) {
            echo "また投稿情報が登録されていません\n";
            return;
        }

        while (true) {
            $num = 1;
            echo "削除したいツイートを選択してください\n";
            foreach (Tweet::$tweets as $tweet) {
                echo "[$num] :" . $tweet->name . "\n";
                $num += 1;
            }

            $input = trim(fgets(STDIN));

            if ($input <= count(Tweet::$tweets) && $input > 0) {
                unset(Tweet::$tweets[$input - 1]);
                Tweet::$tweets = array_values(Tweet::$tweets);

                echo "削除が完了しました。\n";
                break;
            } else {
                Tweet::exeption();
            }
        }
    }

    static function end_program() {
        echo "ご利用ありがとうございました。\n";
        exit;
    }

    static function exeption() {
        echo "入力値が無効です。\n";
        echo "もう一度入力してください。\n";
    }
}

while(true) {
    echo "処理を選択してください\n";

    echo "[0] : 投稿情報の投稿\n";
    echo "[1] : 投稿された情報の閲覧\n";
    echo "[2] : 投稿情報の削除\n";
    echo "[3] : アプリケーションの終了\n";
    $input = trim(fgets(STDIN));

    if ($input == 0) {
        TWeet::input_tweet();
    } elseif ($input == 1) {
        Tweet::read_tweet();
    } elseif ($input == 2) {
        Tweet::destroy_tweet();
    } elseif ($input == 3) {
        Tweet::end_program();
    } else {
        Tweet::exeption();
    }
}

?>