• ベストアンサー

共通で使う配列について

外部ファイル(複数のページからインクルードされる)に、 配列を定義するのって普通なのでしょうか。 例えば、曜日関係の処理をする場合、 $days = Array(0=>'日', 1=>'月', 2=>'火', 3=>'水', 4=>'木', 5=>'金', 6=>'土'); と言う配列を用意すれば、曜日の一覧を表示することも、 番号に対応する曜日名を取得することもできます。 でも、定数でもないのに、別のファイルで定義された変数を使うのって何だか違和感があります・・・。 (配列が定数として使えれば一番良いんですが) そこで、「曜日の配列を返す関数」を用意すると言う方法(下記参照)も考えました。 function get_days(){ return Array(0=>'日', 1=>'月', 2=>'火', 3=>'水', 4=>'木', 5=>'金', 6=>'土'); } // 特定の曜日名を取得する場合 $days = get_days(); print $days[$number]; 結局やっていることは同じなのですが、関数を呼び出す手間がかかってしまうのもどうなんだろう・・・と思ってしまいます。 みなさんはこのような場合、どういった方法を使っていますか? また、この2つならどちらの方が分かりやすいですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

通常includeする場合は競合をさけるためにclass化しておくものじゃないですか? であれば配列は関数から受け取るのが妥当でしょう・・。 include "common.php"; $common=new common; $days=$common->get_days(); //common.php class common{ function get_days(){ return Array(0=>'日', 1=>'月', 2=>'火', 3=>'水', 4=>'木', 5=>'金', 6=>'土'); } } みたいなかんじ・・・

neunter
質問者

お礼

回答ありがとうございます。 配列は定数にできないので、共通の変数にすると好きなように変更できてしまう点が気になっていたのですが、 (同じ名前で違う配列を作ってしまっても分からないですし…) classの中でprivateな配列を作っておき、それを使って処理を行えば、 こういった心配もなくなりますね。 class化は考えていなかったので、良い方法だと思いました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • mpx
  • ベストアンサー率71% (149/209)
回答No.2

>> 別のファイルで定義された変数を使うのって何だか違和感があります・・・。 何に“違和感”を感じるかは個人差が有りますので 御自分の納得する方法で実現するしかありませんが、 コンフィグファイルをインクルードして利用する著名なソフトや汎用ライブラリーでも コンフィグファイルの中に配列で設定値などが定義されているものも多々見受けられるので 私は一般的な手法と考えています。 例 phpmyadmin など どうしても納得できない場合は、配列と類似の記述で利用できる形式で 関数を定義しておくのも手ですね。 例 <?php function weekday($n){return mb_substr("日月火水木金土",$n%7,1);} print weekday(2); ?>

neunter
質問者

お礼

回答ありがとうございます。 他の人のソースを見てみると言うのは考えたのですが、phpmyadminは全く候補にありませんでした。 早速見て参考にしたいと思います。

全文を見る
すると、全ての回答が全文表示されます。
  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

どちらでも良いんじゃない? 規模が大きい場合は共通部分は別にしておいてライブラリ化のようにしてincludeなりで使うのはむしろ普通のやり方だと思う http://jp.php.net/manual/ja/function.require-once.php

neunter
質問者

お礼

回答ありがとうございます。 何が「普通」なのかも分からない状態だったので、「普通のやり方」だと言うことが分かって良かったです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • rubyの配列について

    ~kane_controller.rb~ def kane @youbi = %w[日 月 火 水 木 金 土] end ~kane.rhtml~ <%= @youbi[0] %>  ※今は「日」を取得するために「0」を代入しています。 上記のように記述して曜日を取得するプログラムを設計しています。 しかしうまくできません。 「0」を指定した場合、「日 月 火 水」とでます。 どのように記述したら曜日をうまく取得することができるでしょうか?

  • 配列を返す関数から、一つの要素だけ取り出したい。

    例えば、配列を返す関数、get_array がある時、 その配列の0番目の要素だけが欲しい時、 Perlでは、 $val = get_array[0]; (配列リファレンスを返す場合は、$val = get_array->[0]; ) みたいな感じで書けたと思いますが、 PHPでは、 $val = get_array()[0]; みたいに書けないですよね? 以下のように、二行で書かなければダメですか? $array = get_array(); $val = $array[0];

    • ベストアンサー
    • PHP
  • 定数配列の書き方

    VB6で定数を定義する場合は次の通りです。   Const strTest As String = "TEST" では、定数配列を定義する場合はどのように書けばいいのでしょう?   Const astrTest() As String = Array("A", "B", "C")      '→NG   Const astrTest(0 To 2) As String = Array("A", "B", "C")  '→NG いろいろな書き方を試して見たのですが、上記のような書き方でも文法的にエラーになるようです。 どのように書けばいいのでしょうか? それとも定数を配列で定義するのは無理なんでしょうか?

  • 日付を表示するプログラム

    「2017/04/01 (土)」の形式で本日の日付を出力する場合は以下のコードで合っていますか? <?php //関数を作成し曜日をグループ化 function Week(){ return array('日', '月', '火', '水', '木', '金', '土'); } //曜日を取得して変数化 $w = Week()[date("w")]; //全て表示 echo date("Y/m/d($w)"); ?>

    • ベストアンサー
    • PHP
  • エクセル関数の問題を教えください

    問題 関数を使用し、下記の例題のような予定表の日、曜日を表示させてください (1)2011年2月の予定表を作成してください (2)2011年3月の予定表を作成してください (月末の日が月により変わりますので、その部分を関数で作成してください) (曜日部分は全て関数で作成してください) 例題 3 月予定表 日 曜日 予定 1 火 2 水 3 木 4 金 5 土 6 日 7 月 8 火 9 水 10 木 11 金 12 土 13 日 14 月 15 火 16 水 17 木 18 金 19 土 20 日 21 月 22 火 23 水 24 木 25 金 26 土 27 日 28 月 29 火 30 水 31 木

  • 配列にある値との比較チェック

    VB6です。 myArray や myValueのような配列がある場合で、 pValueがその中に含まれるかどうか判定しよう とする場合、カウンター(i)やFor Each を使って 総当たりチェックする以外に方法はないのでしょうか? たとえば、SQLなんかで使う In や Not In は ダメなのでしょうか? Public myCheck(pValue as String) AS Boolean myArray AS String myValue(6) AS Sting myArray = Array("日","月","火","水","木","金","土") myValue2(0) ="日" myValue2(1) ="月" myValue2(2) ="火" myValue2(3) ="水" myValue2(4) ="木" myValue2(5) ="金" myValue2(6) ="土" End Function

  • 多次元配列のカウントのしかた

    すみません、質問させてください。 $array1:1次元配列 $array2:2次元配列 1次元配列のカウント(要素数)をしるには count($array1) とすれば取得することができますが、 2次元配列のカウントを取得するにはどのように すればいいのでしょうか?そんな関数はありますか? $array2のデータの中身 $array[0][0] = 'a'; $array[0][1] = 'b'; $array[1][0] = 'c'; $array[1][1] = 'd'; $array[2][0] = 'e'; $array[2][1] = 'f'; この場合、3という値が欲しいのですが・・・ 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • 配列の初期化

    表題の件で質問があります。 //------------------------------------// $A_array = array("1", "2", "3"); $B_array = array("9", "8"); for($cnt=0;$cnt<count($A_array);$cnt++){ $test[] = $A_array[$cnt]; } for($cnt=0;$cnt<count($B_array);$cnt++){ $test[] = $B_array[$cnt]; } ※わかりやすいようの簡単に書いてみました。 //------------------------------------// 上記の処理の場合配列testには ("9", "8", "3")となってしまい、 ("9","8")のデータを取得できません。 簡単に言うと配列名を使いまわししたいと考えています。関数かなにかで配列の中身を初期化するような ものはありますでしょうか?

    • 締切済み
    • PHP
  • 曜日の順番

    曜日の順番は、何故、日、月、火、水、木、金、土?太陽系でなら、日、水、金、火、月、木、土になりますが、何故ですか?

  • 二次元配列のソート PHP

    タイトルのとおりソートを行ってくれる関数を探しております。 $buf[][]の二次元配列の変数を日付の降順に並べ替えたいのですが、そういった関数は用意されていますか? sort()、rsort()では不可能かと思います。 以下、二次元配列の値です。配列三番目の日付の降順で再格納したいです。 ( [0] => Array ( [0] => 1[1] => name1 [2] => 2006-08-18 ) [1] => Array ( [0] => 2 [1] => name2[2] => 2006-08-28 ) [2] => Array ( [0] => 3[1] => name3 [2] => 2006-08-18 ) [3] => Array ( [0] => 4 [1] => name4[2] => 2006-08-18 ) よろしくお願いいたします。

    • ベストアンサー
    • PHP