人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

phpに関する質問です。
ひとつの定数または変数に複数の値を入れる(配列とは異なります)にはどうしたらよいでしょうか?
以下のソースがあります。
//test1.php
define("_MODE_A", "1");

//test2.php
include "test1.php";
$IfTypeA = ($id == _MODE_A") ? TRUE : FALSE;
$IfTypeB = !$IfTypeA;

この場合、IfTypeAをTRUEにするには_MODE_Aの値が1である必要がありますが、2と3の場合もIfTypeAをTRUEにしたいです。
修正するファイルはtest1.phpだけにしたいためdefine("_MODE_A", "1");を修正するか付け加える必要があります。
この場合test2.phpには一切手を加えず、test1.phpだけを修正することだけで_MODE_Aに1、2、3の複数の値を持たせることは可能でしょうか?
定数が不可な場合、_MODE_Aを変数に変えても構いません。
ご教示頂けると幸いです。宜しくお願い致します。

PHP 5.1.6

●質問者: xptree
●カテゴリ:インターネット ウェブ制作
✍キーワード:PHP ひとつ ソース ファイル 切手
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● うぃんど
●60ポイント ベストアンサー

defineを用いて無理からに行うとすれば下記のような具合になりますが煩雑すぎて使い勝手が悪すぎます

//test1.php
define("_MODE_A", "1,2,3");
 
//test2.php
include "test1.php";
$IfTypeA = ( array_search( $id, split( ',', constant("_MODE_A") ) ) !== FALSE ) ? TRUE : FALSE;

定数は不変で普遍的な1つの値なので、今回のような場合は定数ではなく関数を用いましょう

//test1.php
function modoCheck( $mode, $id ) {
 $modeList = array( "_MODE_A"=>array( "1", "2", "3" ), "_MODE_B"=>array( "4", "5", "6" ) );
 return( ( array_search( $id, $modeList[$mode] ) !== FALSE ) ? TRUE : FALSE );
}

//test2.php
include "test1.php";
$IfTypeA = modoCheck( "_MODE_A", $id );

もっと使いやすくするためにclass定義というものがあるのですが、まずは上記で検討してみてください

学ぶ時間ができたならばclassについても学んで実装してみてください

◎質問者からの返答

回答ありがとうございます。とても参考になりました。

無事1.2.3を_MODE_Aにすることができました。

しかし最後の$IfTypeB = !$IfTypeA;が無効となってしまいました。

IfTypeAとIfTypeBでは表示される画面が異なっていたため、IfTypeBの場合画面が真っ白になってしまいます。

IfTypeBは123以外の全てのパラメータです。

ご教示頂けると幸いに存じます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ