
現在ラジオボタンでの選択後に条件分岐するスクリプトを製作しておりますが、if文で製作すると私の場合(駆け出しです。)およそ、見当もつかない位の時間がかかります。そこで皆様方の知恵を頂き開発時間の短縮が出来ればと思い投稿しました。よろしくお願いします。
<内容>
(1)値段表示はファイルを読み込んで表示します。200.txtなら、200円と表示です。
(2)前のページより田中、鈴木、小林の値をhiddenで送っています。鈴木さんが購入すると、田中さんより200円UP、小林さんだと、田中さんより300円UPにしています。
1.php
(下記のようにグダグダ長い文を書いていくのはあまりにも非効率のような気がしますので皆様方の知恵を拝借させていただきたいと思います。あつかましくて申し訳ございません。)
<?php
if(c=="田中" && a=="001" && b=="0"){
$file_name="200.txt";
$file=fopen($file_name,"r") or die("OPENエラー $file_name");
$string = fgets($file, 20);
echo $string;
}
elseif(c=="田中" && a=="002" && b=="0"){
$file_name="400.txt";
$file=fopen($file_name,"r") or die("OPENエラー $file_name");
$string = fgets($file, 20);
echo $string;
}
elseif(c=="田中" && a=="0" && b=="010"){
$file_name="600.txt";
$file=fopen($file_name,"r") or die("OPENエラー $file_name");
$string = fgets($file, 20);
echo $string;
}
以下省略
?>
No.2ベストアンサー
- 回答日時:
こんにちは。
まず、変数$c とか $a とか $b って何でしょうか。変数に意味のある値を入れたいならば、それを読んでいる方に伝えたい場合は意味のある変数名にしてみてください。たとえば、
$c は、 $name ・・・名前を入れるんだなってわかりやすいですよね
$a は、 $count・・・カウント
$b は、 $no・・・商品番号を入れるだろうな
みたいな。
(もしくは$c は、田中さんの買った個数でしょうか。$a が鈴木さんが買った個数とか?)
それと、$a の値が1番目と2番目の if では3桁なのに3番目の if では "0" 一桁になっています。
さらに、$c の値が3つ目の if でいきなり "010"???になってるし $a が "0" に・・・。
この辺を3桁なら3桁に統一、もしくは全部、頭に「 0 」を「付けない」。といった統一する規則がないと開発期間を短くすることはほど遠いでしょう。
また、鈴木さんと小林さんはどこに出てきますか?
で、見た感じプログラムの覚えたての頃にやりそうな記述の仕方ですね。よって、慣れていけばそれなりに上手に書けるようになっていきます。まずは『プログラムになれること。』だと思います。
具体的に見ていくと、3つの if で、「 c == "田中" 」ってあるので、この3つの if の前に、
if ($c == "田中"){
if ( $a == "001" && $b == "0")
のように出来ます。次に、どの if後の処理にも
$file = fopen($file_name , "r") or die("OPENエラー" . $file_name);・・・・
と、ありますが、これは if群を抜けてからでいいんじゃないですか。具体的には、
---------------------- 質問に書かれていた処理を書き直すと -----------------------
if ($c == "田中"){
if ( $a == "001" && $b == "0") //マッチした後の処理が1行の時は「{」を省略できる
$file_name = "200.txt";
else if ( $a == "002" && $b == "0")
$file_name = "400.txt";
・・・・・・省略・・・・・・
} // if ( $c == "田中") の終了
//ファイルのオープンと読み込み
$file = fopen($file_name , "r") or die("OPENエラー $file_name");
$string = fgets($file , 20);
echo $string;
--------------------------------------------------------------------------------------
あと、 $a の値と、ファイルの名前に共通の部分があるなら、たとえば・・・if なんか使わなくても
$tmp = $a * 100;
$file_name = (string)$tmp . ".txt";
これだけで出来ます。
$c と絡ませたいのならそういった使い方にするような変数にする方が楽でしょう。
$tmp = $a * $c * 100;
$file_name = (string)$tmp . ".txt";
この辺は『慣れ』でしょうから、いきなり、と言うよりは徐々に書き直していくとよいと思いますよ。
そのうち、自分で定義した関数やクラスを書いて処理するようになるでしょう。
※なお、処理速度という点から見るのでしたら、function や classで汎用性を高くすると、利便性に反して処理は遅くなります。(メモリ上にある自分で定義した関数やクラスを呼び出す手間がかかるため)
この辺のどうやって処理させるかも、慣れれば自分流で出来るようになります。
ご回答ありがとうございます。ご回答頂いた内容に非常に満足しております。言葉足らずを補っていただき、また、具体的なソースを教えていただいて、本当に感謝しております。ありがとうございました。
所で理論演算子ですが、例えば
************************************************
$a==001 を基点に $b==0ならtrue $b==1ならtrueに
したいのです。$b同士は処理しません。
************************************************
このような理論演算子は存在するのでしょうか?下記に書いたものは &&とorですが、これはだめでした。もう少しお付き合いいただければと思います。よろしくお願いいたします。
if ($c == "田中"){
if ( $a == "001" && $b == "0" or $b == "1")
No.3
- 回答日時:
慣れですかね。
。たとえば、三つの条件を一変に指定するので条件が多くなってしまうかと思います。
(1)値段表示はファイルを読み込んで表示します。200.txtなら、200円と表示です。
どうやって値段表示ファイルを選択するのかがわかりませんが。。。
たとえば$aが選択の基準ならば$aだけでif文を作ればよいのでは。
(2)前のページより田中、鈴木、小林の値をhiddenで送っています。鈴木さんが購入すると、田中さんより200円UP、小林さんだと、田中さんより300円UPにしています。
これは
$plus = 0; # プラス金額初期設定
if ($c == "鈴木") {
$plus += 200;
} elseif ($c == '小林') {
$plus += 300;
}
とかで、各条件を別々にすればいいのでは?
No.1
- 回答日時:
開発期間というか。
。。処理を短くしたいってことですよね。
同じ処理がある場合はfunctionを使います。
自分専用関数を作るイメージです。
頑張ってください。
#もっといい参考ページがあるかもしれません。
参考URL:http://ww7.tiki.ne.jp/~inabah/php/004_001.htm
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
[php初心者]サイトを見てデータ...
-
セッション関数を使わずにファ...
-
PHP8でWarning:Undefined varia...
-
composerをインストールしたい...
-
phpの問い合わせフォームを作っ...
-
PHPで画像の渡しが上手く行きま...
-
アップロードファイルを表示す...
-
marginの値でマイナス値を設定...
-
ゆゆにゃ。
-
掲示板のセキュリティについて...
-
$_SESSIONについて教えて下さい。
-
EC-CUBEをeclipseからコンパイ...
-
phpでこの記述をもっと簡単に書...
-
PHPの構文で間違えが分からない
-
ここで言う「アロー演算子」の...
-
submitで思うようにページが遷...
-
HTML PHP ラジオボタンのイベント
-
php でqiitaのサイトにあったフ...
-
SplFileObject を利用したとき...
-
PHPの勉強してます。 配列のと...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHP8でWarning:Undefined varia...
-
phpの問い合わせフォームを作っ...
-
composerをインストールしたい...
-
BASIC認証のフォームをデザイン...
-
SplFileObject を利用したとき...
-
phpでcookieがうまく保存されない
-
PHPのセッション有効期限について
-
PHPで画像の渡しが上手く行きま...
-
PHP8を使うと、大量のWarningが...
-
フォームで戻った際に入力済み...
-
Q&Aサイトを作成していてURLの...
-
PHPを使って、別サイトの一部を...
-
$_SESSIONに渡した後はそのまま...
-
reuterの記事をbeautiful.soup....
-
PHPSpreadsheetを使って関数を...
-
PHPのエラーの解消法について教...
-
ファイルの遷移がうまく行われ...
-
PostgreSQLからCSV形式でエクス...
-
php エラー
-
HTML PHP ラジオボタンのイベント
おすすめ情報