先日お問い合わせにて、PHPの外部ファイルを読み込み、そのファイルの数を指定してランダムで出力する方法を質問されたので、その方法についてご紹介します。
PHPを使ってホームページを制作したりする際には必要となるので、制作していて困った方は是非参考にしてみてください。
どのような状況か
今回質問があった状況は、CMSでサイト作りをしている最中に起こった出来事です。
random_text.phpファイルに、以下のように記述してあるとして
<?php $RANDOM_LIST = array(); $RANDOM_LIST[] = '<p><a href="01.php">あああ</a></p>'; $RANDOM_LIST[] = '<p><a href="02.php">いいい</a></p>'; $RANDOM_LIST[] = '<p><a href="03.php">ううう</p>'; ?>
別のphpファイルから、このファイルの$RANDOM_LISTを、数を指定してランダムに出力するには、どのように書けば実装できるのかという質問でした。
PHPの記述方法
PHPを使って、数を指定してランダムに出力する方法はいくつか有ります。
今回紹介するのは、その中でも一番簡単だと思う方法です。
require_once 'random_text.php'; //ファイルを呼び出す $cnt = 2; // 出力したい数を入力 $keys = array_keys($RANDOM_LIST); //キーを取得する shuffle($keys); //シャッフルする for ($i=0;$i<$cnt;$i++ ) { //取得数だけ繰り返す echo $RANDOM_LIST[$keys[$i]]; //RANDOM_LISTのどれかが$cntの数だけ出力される }
コメントで軽く説明は書いていますが、1つずつ解説をしていきます。
ファイルを呼び出す。
require_onceはファイルを呼び出す記述です。
requireと変わりませんが、onceをつけることによって、重複してファイルを読み込まないという記述をすることができます。
出力したい数を入力
cntで、数をカウントする箱を作ります。
定義名はなんでも大丈夫です。
キーを取得する方法
array_keysで、そのファイルに何が書かれていたのかを認識することができます。
取得したキーをシャッフルする
ランダムに表示したいという希望だったので、取得したrandom_listをシャッフルします。
取得数だけ繰り返す
出力したい数だけ繰り返す方法は、いくつか方法があります。
for文で指定してあげることにより、数が増えたり減ったりした時も簡単に変更することが可能です。
そして、最後にechoにて出力してあげます。
まとめ
phpで外部ファイルを出力して、ランダムで読み込む方法はそこまで難しくありません。
色んな事が入ってくると、応用になってしまって、頭がこんがらがってしまいます。
なので、その時は一度紙などに、何がしたいのかを書いてみることをおすすめします。
紙に何がやりたいかを、書いていったら、それをするために必要な工程を1つずつ書いていきます。
そうしたら、それをプログラミングとして組めば成功する確率が高まります。
プログラミングは考え方が大きく関係してくるので、めんどくさいように見えて実はそういうやり方が一番時間がかからなかったりするんですよね。