実行するとランダムで取得した値を利用して、3パターンくらいの画像を切り替えて表示するPHPファイル
を作成したいです!
以下のように書いてみたのですが、如何せん初心者なものでできない原因すらわかりません!
間違っているところを是非指摘していただきたいです。
宜しくお願い致します
<?php
$rand = rand(1,10);
switch($rand){
case 1:
echo("1");
break;
case 2:
echo("2");
break;
case 3:
echo("3");
break;
case 4:
echo("4");
break;
case 5:
echo("5");
break;
case 6:
echo("6");
break;
case 7:
echo("7");
break;
case 8:
echo("8");
break;
case 9:
echo("9");
break;
case 10:
echo("10");
break;
if ($rand <= 3){
echo"<img src='a.jpg'>";
}
elseif ($rand 4< || $rand >6 ) {
echo"<img src='b.jpg'>";
elseif ($rand 7< || $rand >10 ) {
echo"<img src='c.jpg'>";
}
}
?>
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
見た感じ、1~10の数値をifで場合分けするロジックの演習ですよね
演算子の書き方もおかしいし、論理式の考え方も変
さらに文法エラーもあるので、もうすこし教科書をよくよんで
気をつけて書いた方がいいでしょう
$randが3以下、4以上6以下、7以上10以下の場合分けであれば
if ($rand <= 3){
echo"<img src='a.jpg'>";
}elseif ($rand <=6 ) {
echo"<img src='b.jpg'>";
}else {
echo"<img src='c.jpg'>";
}
ifは前から評価されますから最初に3以下をチェックしているので
つぎにelseifを使うのであれば$randはすでに4以上は確定しています
同様に次のifで6以下をチェックしているのであれば
最後のelseは7以上が確定しています
無駄だと理解したうえでどうしてもかきたいなら
if ($rand >= 1 and $rand <= 3){
echo"<img src='a.jpg'>";
}elseif ($rand >=4 and $rand <=6 ) {
echo"<img src='b.jpg'>";
}elseif ($rand >=7 and $rand <=10 ) {
echo"<img src='c.jpg'>";
}
No.3
- 回答日時:
小学校でよくあった「習った漢字しか使っちゃダメ」みたいな縛りプレイは大嫌いなのですが、まぁ一応回答はしておきますね…既存のコードを修正する方針でいきます。
1.
randの代わりにより動作が高速なmt_randを使いましょう。また、範囲は0~2(または1~3)を指定しましょう。3つしか要素が無いなら0,1,2(1,2,3)の中から選ばせれば等しい確率になりますよね?最初に書いたコードでは全体が「100%」のイメージで分母を10にしたんだと思いますが、分母は10である必要はありません。選択肢が3通りなので3にするのが正解です。
PHP Manual - mt_rand
http://www.php.net/manual/ja/function.mt-rand.php
2.
確認用だとは思いますが、switchブロックは無意味なので全部消してください。
3.
あとはif文で
if ($rand == 0) {
} elseif ($rand == 1) {
} else {
}
のように分岐させるだけですよね。
また、今後のためのアドバイスとして…PHPではせっかく2つの対応関係を並べられる「配列」が非常に便利なので積極的に利用しましょう。if文やswich文で分岐させるよりはあらかじめ定義しておいた配列のパターンを選択する方がコードは美しく書けます。
No.1
- 回答日時:
まず、
$rand 4<
$rand 7<
などという比較の書き方は PHP にはありません。
次に、
a || b
は「a か b のどちらかが成り立つか」という意味で、「a と b の両方とも成り立つか」という意味ではありません。
最後に、elseif は「括弧内が成り立たないならば」という意味ではなく「それ以前の if/else の条件が成り立たず、かつ、括弧内が成り立つならば」という意味です。
おまけで、上記をすべてなおしたとしてもたぶん 1/10 の確率で画像が出ないか、あるいは、他の画像よりも表示されやすい画像が出てくるでしょう。rand の引数を再検討しましょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- Perl RSSにdiv,ul classを付けたいのですがどのようにつけるのかわからないです 2 2022/03/28 01:53
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- PHP 共通の処理をまとめる方法がわからないのでアドバイスお願いします。 1 2022/12/19 20:20
- JavaScript jsで、switch文で書かれた分をif文にできませんか。 1 2022/07/28 15:10
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- PHP PHP echo バックスラッシュの使い方 img要素 2 2023/01/08 22:46
- MySQL SQL任意に並び替えをしたい 2 2023/08/28 10:47
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Dosブロンプトでtabを出力したい
-
小数点以下0の非表示
-
オブジェクトの中身の判定(PHP)
-
switch()文で値の大小比較
-
バッチファイルでpingの結果を...
-
バッチファイルで、全てのウィ...
-
syntax error, unexpected 'ech...
-
ゼロとNULLを区別して number_f...
-
カレンダーの今日の日付をハイ...
-
Parse error というエラーの対...
-
shシェルスクリプト 空白行の...
-
PHP .csvの取り込み後、表の列...
-
checkboxでの複数選択削除がわ...
-
findstrのerrorlevel
-
bashの関数の引数にスペースが...
-
phpでcookieがうまく保存されない
-
変数の受け渡しによる画像の表示
-
シェルで正規表現 YYYY/MM/DD
-
simplexmlでルート要素の値を取...
-
Windowsのsetコマンドでの小数...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Dosブロンプトでtabを出力したい
-
switch()文で値の大小比較
-
バッチファイルでpingの結果を...
-
shシェルスクリプト 空白行の...
-
phpでcookieがうまく保存されない
-
findstrのerrorlevel
-
syntax error, unexpected 'ech...
-
小数点以下0の非表示
-
バッチファイルで、全てのウィ...
-
オブジェクトの中身の判定(PHP)
-
PHPで訪問回数を表示するカウン...
-
ゼロとNULLを区別して number_f...
-
bashの関数の引数にスペースが...
-
ナベアツプログラム(3の倍数...
-
変数の受け渡しによる画像の表示
-
PHP一覧表示した項目にリンクを...
-
Windowsのsetコマンドでの小数...
-
Parse error というエラーの対...
-
pdftkを使った処理をバッチファ...
-
DBのハッシュ化したパスワード...
おすすめ情報