注文内容で後処理を変えたい
やりたいことは、フォームから注文した商品を一回の注文内容で後処理を変えたいということです。
具体的に話ますと
POST送信された注文の中身がすべてが0の時、Aの処理
POST送信された注文の中身がすべて1の時、Bの処理
POST送信された注文の中身が1または0の時、Bの処理
POST送信された注文の中身が1または3の時、Bの処理
POST送信された注文の中身が1の商品または0の商品または3の時、Bの処理
POST送信された注文の中身がすべて2の時、Cの処理
POST送信された注文の中身に2が含まれる時、Cの処理
POST送信された注文の中身がすべて3の時、Dの処理
POST送信された注文の中身が3または0の時、Dの処理
つまり、下記のようなイメージで処理したいのです。
(例は7品目の注文があったとして考えていますが、何品目になるかは注文によってかわります。)
例 注文商品を処理したいイメージ
┃A │B │B │B │B │C │C │D │D ┃
┠─┼─┼─┼─┼─┼─┼─┼─┼─┨
┃0│1│1│1│1│2│2│3│3┃
┃0│1│1│3│0│2│2│3│0┃
┃0│1│0│1│3│2│3│3│0┃
┃0│1│1│1│3│2│1│3│3┃
┃0│1│0│3│0│2│0│3│3┃
┃0│1│0│1│1│2│2│3│0┃
┃0│1│1│1│3│2│3│3│0┃
そこで、一番簡単そうな「処理A」のような商品の注文について考えてみました。
そのプログラムが下記のプログラムですが、結果は「syori ERROR」と表示されます。
どうやら、正規表現マッチの記述が間違っているようなのですが、どう記述すればわかりません。
教えていただけないでしょうか。
また、他のパターンの場合の正規表現マッチの記述または処理の仕方も教えていただけないでしょうか。
phpのバージョンは4.4.2です。
$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);
foreach($tyumonA as $data){
$num = count($data);
$deff =0;
for($i=0; $i<$num; $i++){
if(preg_match('/0[$i]/', $data[$i])){
echo '<p>' . 'OK!' . '</p>';
$deff++;
}else{
echo '<p>' . 'ERROR' . '</p>';
}
}
}
if($deff == $num){
echo 'syori_A';
}else{
echo 'syori ERROR';
}
最終的にはこんな形にしたいです。
foreach($tyumon as $data){
if(){
$result = syori_A;
}elseif(){
$result = syori_B;
}elseif(){
$result = syori_B;
}elseif(){
$result = syori_B;
}elseif(){
$result = syori_B;
}elseif(){
$result = syori_C;
}elseif(){
$result = syori_C;
}elseif(){
$result = syori_D;
}elseif(){
$result = syori_D;
}else{
continue;
}
}
よろしくお願いします。
お礼
回答ありがとうございます。 ご指摘の方法で試してみたところ、動きました! 空行も正規表現で表せるんですね。ありがとうございました。