Help us understand the problem. What is going on with this article?

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

More than 3 years have 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();
    }
}

?>

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away