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

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

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

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

PHP

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

Q&A

解決済

2回答

3430閲覧

if文の結果を変数に代入したい

sasamochi07

総合スコア1

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

PHP

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

0グッド

0クリップ

投稿2020/06/05 13:46

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
PHPでおみくじ的なアプリを作っています。
具体的な実装は以下になります。
・フォームを入力(名前と年齢)
・ページが遷移
・フォームで入力した名前、年齢、おみくじの結果を表示する
・表示結果を右記のようにする
・「名前+年齢+おみくじの結果」

おみくじはrand関数を使用し、if文で表示しているのですが、
最後の「名前+年齢+おみくじの結果」の表示をさせるために、
if文の結果を変数に代入したいと思っています。
どのように変数に代入できるかわからないので、教えていただけますと幸いです。

発生している問題・エラーメッセージ

$num = rand(1,5); //以下の処理を変数に代入したい if($num==1){ echo '大吉'; }elseif($num==2){ echo '中吉'; }elseif($num==3){ echo '小吉'; }elseif($num==4){ echo '吉'; }else{ echo '凶'; }

試したこと

$result = if($num==1){ echo '大吉'; }elseif($num==2){ echo '中吉'; }elseif($num==3){ echo '小吉'; }elseif($num==4){ echo '吉'; }else{ echo '凶'; }

上記のように通常の変数に代入するコードを記載したのですが、
エラーが出てしまい代入できませんでした。

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

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

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

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

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

guest

回答2

0

ベストアンサー

randの使いどころでしょうね

php

1$omikuji=["大吉","中吉","小吉","吉","凶"]; 2$num = rand(0,count($omikuji)-1); 3print $omikuji[$num];

とすればよいですが、配列でもっているならshuffleして先頭を抜けばいいです

PHP

1$omikuji=["大吉","中吉","小吉","吉","凶"]; 2shuffle($omikuji); 3print $omikuji[0];

ただし、実際にはすべてが同じ確率では面白みがないので、
適当な確率調整が必要です

投稿2020/06/06 05:27

yambejp

総合スコア116724

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

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

sasamochi07

2020/06/08 15:37

回答していただきありがとうございました。 シンプルでわかりやすいのでベストアンサーとさせていただきます
guest

0

echoせずに普通に変数にそれぞれ代入するか、関数化してreturnすれば良いのでは。

それに「ifの結果」って、「ifの条件式の真偽」だけですよ。true/falseだけ。

きっと大喜利なので、ざっと出しておきます。
※あくまで「1つの目的を達成するための手段は1つではない」ということ

php

1<?php 2$num = rand(1,5); 3if($num===1){ 4 $res = '大吉'; 5}elseif($num===2){ 6 $res = '中吉'; 7}elseif($num===3){ 8 $res = '小吉'; 9}elseif($num===4){ 10 $res = '吉'; 11}else{ 12 $res = '凶'; 13} 14 15echo $res; 16

php

1<?php 2function result(int $i){ 3 if($i===1){ 4 return '大吉'; 5 }elseif($i===2){ 6 return '中吉'; 7 }elseif($i===3){ 8 return '小吉'; 9 }elseif($i===4){ 10 return '吉'; 11 }else{ 12 return '凶'; 13 } 14} 15 16$num = rand(1,5); 17$res = result($num); 18 19echo $res; 20

php

1<?php 2function result(int $i){ 3 $res = '外れ'; 4 switch($i){ 5 case 1: 6 $res = '大吉'; 7 break; 8 case 2: 9 $res = '中吉'; 10 break; 11 case 3: 12 $res = '小吉'; 13 break; 14 case 4: 15 $res = '吉'; 16 break; 17 default: 18 $res = '凶'; 19 20 } 21 return $res; 22} 23 24$num = rand(1,5); 25$res = result($num); 26 27echo $res;

php

1<?php 2function result(int $i){ 3 $results = [ 4 1=>'大吉' 5 ,2=>'中吉' 6 ,3=>'小吉' 7 ,4=>'吉' 8 ]; 9 10 if(array_key_exists($i,$results)){ 11 return $results[$i]; 12 } 13 return '凶'; 14} 15 16$num = rand(1,5); 17$res = result($num); 18 19echo $res;

それに「ifの結果」って、「ifの条件式の真偽」だけですよ。true/falseだけ。

にも言及しておきます。

php

1<?php 2$num = rand(1,5); 3var_dump(($num==1)); 4var_dump(($num==2)); 5var_dump(($num==3)); 6var_dump(($num==4)); 7var_dump(($num==5));

「試したことっぽい」ことやろうと思ったら無名関数ですかね。

php

1<?php 2$num = rand(1,5); 3$func = function($i){ 4 if($i===1){ 5 return '大吉'; 6 }elseif($i===2){ 7 return '中吉'; 8 }elseif($i===3){ 9 return '小吉'; 10 }elseif($i===4){ 11 return '吉'; 12 }else{ 13 return '凶'; 14 } 15}; 16 17$res = $func($num); 18echo $res;

本件とは関係ないですけど、結構あるんですね

投稿2020/06/05 13:57

編集2020/06/05 14:51
m.ts10806

総合スコア80875

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

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

sasamochi07

2020/06/08 15:38

ほかの選択肢もわかりやすく提示してくださりありがとうございました。 初歩的な質問にもかかわらず丁寧に回答してくださり感謝です。
m.ts10806

2020/06/08 20:15

解決されたようで何よりですが 理解につながったかの方が大事です。 回答につけてますが、PHPマニュアルは必ず活用してください
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問