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

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

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

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

Q&A

解決済

3回答

3889閲覧

PHPで関数rand()に2つ以上のパラメータを加えるには?

hanggang

総合スコア31

PHP

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

0グッド

0クリップ

投稿2014/09/15 12:33

質問です。下のコードを実行するとエラーが出力されてしまいました。

lang

1<p> 2<?php 3$arg = rand(1,2,3,4,5); 4if ($arg == 1){ 5echo '<a href="/test1/site1">site1</a>'; 6} 7if ($arg == 2){ 8echo '<a href="/test2/site2">site2</a>'; 9} 10if ($arg == 3){ 11echo '<a href="/test3/site3">site3</a>'; 12} 13if ($arg == 4){ 14echo '<a href="/test4/site4">site4</a>'; 15} 16if ($arg == 5){ 17echo '<a href="/test5/site5">site5</a>'; 18} 19?> 20</p>

エラーコードはこちらです。

lang

1Warning: rand() expects exactly 2 parameters, 5 given...

どうすれば変数の値をランダム化してecho() できるのでしょうか?

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

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

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

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

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

guest

回答3

0

解決済みになっていますが、「特定の値からランダムで取得したい」という場合、下記のような実装でも可能です。参考までに

lang

1<p> 2<?php 3$args = array(1,2,3,4,5); // 配列に格納して 4shuffle($args); // 配列をシャッフルして 5$arg = reset($args); // 先頭を取得(末尾でもOK) 6echo '<a href="/test'.$arg.'/site'.$arg.'">site'.$arg.'</a>'; 7?> 8</p>

投稿2014/09/17 07:15

k.tada

総合スコア1679

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

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

hanggang

2014/09/18 00:47

回答ありがとうございます。 回答頂いたコードを実行してみたら、期待した動作になりました!!
guest

0

ベストアンサー

連続しない任意の数値からランダムに選びたいと言う意図であれば、
ランダムに選びたい値を配列に入れた後、
配列のindexをrand()で生成するとよいと思います。

lang

1<p> 2<?php 3$list = array( 4 1, 5 2, 6 3, 7 4, 8 5, 9); 10$arg = rand(0, count($list) - 1); // $list の index を返す 11$site = 'site'.$list[$arg]; // 'site1'~'site5'の文字列を取得 12echo '<a href="/test1/'.'$site.'">'.$site.'</a>'; 13?> 14</p>

投稿2014/09/16 08:32

toru81

総合スコア170

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

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

hanggang

2014/09/17 01:18

回答ありがとうございました!参考にしようと思います!
guest

0

数字が連続しているので、下のようにすれば簡単ですよ!

関数の使い方としては下のような感じです。

lang

1int rand ( int $min , int $max );

実際ソースにいれるとこのような感じです。

lang

1<p> 2<?php 3$arg = rand(1,5);; // 1 - 5の間でします。 4if ($arg == 1){ 5echo '<a href="/test1/site1">site1</a>'; 6} 7if ($arg == 2){ 8echo '<a href="/test2/site2">site2</a>'; 9} 10if ($arg == 3){ 11echo '<a href="/test3/site3">site3</a>'; 12} 13if ($arg == 4){ 14echo '<a href="/test4/site4">site4</a>'; 15} 16if ($arg == 5){ 17echo '<a href="/test5/site5">site5</a>'; 18} 19?> 20</p>

下記詳細ページ↓
http://www.php.net/manual/ja/function.rand.php

投稿2014/09/15 14:52

poteto

総合スコア142

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問