ひとつの定数または変数に複数の値を入れる(配列とは異なります)にはどうしたらよいでしょうか?
以下のソースがあります。
//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
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以外の全てのパラメータです。
ご教示頂けると幸いに存じます。