質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

3回答

3955閲覧

じゃんけんリスト:ifの条件分岐が機能していない(もうすこしでできそう。。。)

nana727

総合スコア51

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2019/07/31 08:40

コード//input16.php

<!DOCTYPE html> <html lang="ja" dir="ltr"> <head> <meta charset="utf-8"> <title>janken</title> <!-- <link rel="stylesheet" href="../reset.css"> --> <link rel="stylesheet" href="style.css"> </head> <body> <form action="output16.php" method="post"> グー<input type="radio" name="janken" value="グー"> チョキ<input type="radio" name="janken" value="チョキ"> パー<input type="radio" name="janken" value="パー"> <input type="submit" name="submit" value="送信する"> </form> </body> </html> コード ``` <?php

$janken = $_POST["janken"];//自分

$opponent = ["グー","チョキ","パー"];//敵

$count = array_rand($opponent);
//randomで表示

$result =["プレイヤーの勝利","プレイヤーの負け","あいこもう一度",];

?>

<!DOCTYPE html> <html lang="ja" dir="ltr"> <head> <meta charset="utf-8"> <title>janken</title> <!-- <link rel="stylesheet" href="../reset.css"> --> <link rel="stylesheet" href="style.css"> </head> <body> <?php ?> プレイヤー:<?php echo $janken."<br>" ;?> ロボット :<?php echo $opponent[$count]."<br>";

if($janken === "グー" && $opponent ==="チョキ" || $janken === "チョキ" && $opponent === "パー" || $janken === "パー" && $opponent === "グー"){
echo $result[0];
}elseif($janken === "グー" && $opponent ==="パー" || $janken === "チョキ" && $opponent === "グー" || $janken === "パー" && $opponent ==="チョキ"){
echo $result[1];
}else{
echo $result[2];
}
?>
<br><a href="input16.php">もう一度する</a>
</body>

</html>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/07/31 08:52

コードはマークダウンのcode機能を利用してご提示ください。 https://teratail.com/help#about-markdown また、プログラミングにおいては全てtrue/falseなので「惜しい」というのはありません。 「近い」と思ってても場合によっては全部作り直すハメになることだってあります。 細かいところまで見たわけではないですが、 この内容だとロジック考え直したほうが良さそうに思います。 ひとまず「機能していない」だけでは起きている現象は他者には伝わりませんので 具体的に記載してください https://teratail.com/help/question-tips#questionTips3-4-1
退会済みユーザー

退会済みユーザー

2019/07/31 09:01

すげぇな、コードだけ貼られてる。どういう仕様を考えて、どういう機能の作り込みをしているのかもコードから察しろと?
nana727

2019/07/31 09:19

初心者で、すいません。 ifの条件式が簡単に言うと条件式が機能してません。 主に、$opponentです。 varーdumpではtrueが返ってきましたが、if文だと、条件式でもfalseにいってしまいました
m.ts10806

2019/07/31 09:21

質問は編集できますので。
gentaro

2019/07/31 10:31

初心者であることと、ガイドラインを無視することは関係がありません。 m6uさんの指摘のとおり、仕様やコードの意図の具体的な説明、うまくいかない点の記述すらなく、ただコードを貼り付けだだけの質問文は、こういうQ&Aサイトではマナー違反でもあると思います。 質問文を編集して書き直しましょう。
guest

回答3

0

ifの中の$opponentは$opponent[$count]ですよね?

PHP

1<?php 2$janken = filter_input(INPUT_POST,"janken");//自分 3$opponent = ["グー","チョキ","パー"];//敵 4$count = array_rand($opponent); 5$result =["プレイヤーの勝利","プレイヤーの負け","あいこもう一度",]; 6?> 7<form method="post"> 8<label><input type="radio" name="janken" value="グー">グー</label> 9<label><input type="radio" name="janken" value="チョキ">チョキ</label> 10<label><input type="radio" name="janken" value="パー">パー</label> 11<input type="submit" name="submit" value="送信する"> 12</form> 13<?PHP 14if(!is_null($janken)){ 15 $h_janken=htmlspecialchars($janken); 16 $v_opponent=$opponent[$count]; 17 print <<<eof 18プレイヤー:$h_janken<br> 19ロボット :$v_opponent<br> 20eof; 21 22 if( 23 $janken === "グー" && $v_opponent ==="チョキ" || 24 $janken === "チョキ" && $v_opponent === "パー" || 25 $janken === "パー" && $v_opponent === "グー" 26 ){ 27 echo $result[0]; 28 }elseif( 29 $janken === "グー" && $v_opponent ==="パー" || 30 $janken === "チョキ" && $v_opponent === "グー" || 31 $janken === "パー" && $v_opponent ==="チョキ" 32 ){ 33 echo $result[1]; 34 }else{ 35 echo $result[2]; 36 } 37} 38?>

投稿2019/07/31 08:53

yambejp

総合スコア114572

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

判定の中身の$opponentを、$opponent[$count]に変えればよいかと。

投稿2019/07/31 10:13

yukikp

総合スコア797

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nana727

2019/07/31 11:01

ありがとうございます. 3時間ぐらい悩んでいましたができました。 また、質問する際はしっかりと記載事項も読むようにします。 ほかの方々もありがとうございました
yambejp

2019/07/31 11:06

素直に回答を読んでくれれば、13分で回答してたのに・・・
yukikp

2019/07/31 11:10

yambejpさんがとっくの昔に正答を「読みやすく」書いていらっしゃってますね。(今読んだ)
yukikp

2019/07/31 11:11

(しかも回答の1行目が「ifの中の$opponentは$opponent[$count]ですよね?」そのまんまやん。。。) 回答を奪ったわけじゃないですよおおおおお;;
m.ts10806

2019/07/31 11:35

質問は編集できますので(2回目)
yukikp

2019/07/31 11:39

mts10806さんの「質問は編集dkms」も、もう恒例行事のような感じですね。
m.ts10806

2019/07/31 11:57

あと「コードはマークダウン以下略」
yukikp

2019/07/31 11:59

ますますのご活躍を(-人ー)
guest

0

opponent[$count]ではランダムで出力されるのでif文の条件式の中ではふさわしくないと思います。
また、
試行錯誤でopponent[0] == "グー"などやってみたんですが、ダメでした。

投稿2019/07/31 09:13

nana727

総合スコア51

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2019/07/31 09:20

> opponent[$count]ではランダムで出力される いやちがいます。$countはその時点で確定しているので ロボット側の最終的な手です > 試行錯誤でopponent[0] == "グー" だから・・・ $opponent[$count] === "グー" です。 私の回答は一度変数に受けています
nana727

2019/07/31 09:23

回答有難うございます。 今、電車ですので家に帰ってからもう一回カードを動かそうと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問