ああなるほど、なんとなくわかりました。
完全一致が原則であれば、正規表現である必要はありません
こんな感じでどうでしょ?
<?
$tyumonA = array(0,0,0,0,0,0,0);
$tyumonB = array(1,1,1,1,1,1,1);
$tyumonC = array(1,1,0,1,0,0,1);
$tyumonD = array(1,3,1,1,3,1,1);
$tyumonE = array(1,0,3,3,0,1,3);
$tyumonF = array(2,2,2,2,2,2,2);
$tyumonG = array(2,2,3,1,0,2,3);
$tyumonH = array(3,3,3,3,3,3,3);
$tyumonI = array(3,0,0,3,3,0,0);
print "A=".check($tyumonA)."<br>";
print "B=".check($tyumonB)."<br>";
print "C=".check($tyumonC)."<br>";
print "D=".check($tyumonD)."<br>";
print "E=".check($tyumonE)."<br>";
print "F=".check($tyumonF)."<br>";
print "G=".check($tyumonG)."<br>";
print "H=".check($tyumonH)."<br>";
print "I=".check($tyumonI)."<br>";
function check($array){
if(!is_array($array)) return false;
$flg="";
if(match_array(0,$array)) $flg="A";
if(match_array(1,$array)) $flg="B";
if(match_array(Array(0,1),$array)) $flg="B";
if(match_array(Array(1,3),$array)) $flg="B";
if(match_array(Array(0,1,3),$array)) $flg="B";
if(match_array(2,$array)) $flg="C";
if(in_array(2,$array)) $flg="C";
if(match_array(3,$array)) $flg="D";
if(match_array(Array(0,3),$array)) $flg="D";
return $flg;
}
function match_array($vars,$array){
if(!is_array($array)) return false;
$vars_array=is_array($vars)?array_unique($vars):Array($vars);
$array=array_unique($array);
if(count($vars_array)!=count($array)) return false;
foreach($vars_array as $val){
if(!in_array($val,$array)) return false;
}
return true;
}
?>
ちなみに・・・
>POST送信された注文の中身がすべて2の時、Cの処理
>POST送信された注文の中身に2が含まれる時、Cの処理
この二つについて、上の条件は下の条件に含まれてますよね??
お礼
ありがとうございます。 用事で出かけていたので返答が遅れてしまいました。 まさに、やろうとしていたことができました。 それにしてもarray_unique()とは本当に目からうろこです。 これのおかげで、すっきりした構文になってわかりやすいです。 最初in_array()で考えていたのですけど、わたしの使用の仕方が間違っているのかin_array()特有のエラーが発生して、対処に困ったのでpreg_match()を使用しょうとしたのですけど、これもうまくいかなく、途方にくれていましたけど、yambejp様のおかげで助かりました。ありがとうございます。 これでいけるとは思いますが、もう少しテストしてみますね。 貴重な昼休みのお時間の合間に考えていただきましてありがとうございます。
補足
単独のテストでは有効な動作をしてくれます。 ありがとうございました。 後はシステムに取り込んでのテストになりますが、問題はないでしょう。 システムに取り込む際、少し改造しますが、すっきりした構文のおかげで構文自体を理解しましたので、問題が発生しても対処できそうです。 本当にありがとうございました。