みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

複数指定の方法

if ($Type == 'jpg' || $Type == 'gif')
$Media->Category = 1;
else if ($Type == '3gp' || $Type == '3g2')
$Media->Category = 2;

Categoryは上記では1~2までしかありませんが
実際には5まであります。

Typeがjpgかgifだった場合のカテゴリは1ですが
これを1と3と4と5の複数に変更したいです。
このように複数にする場合はどのように記述したら良いでしょうか?

Category1を選択した場合はjpg,gif
Category2を選択した場合は3gp,3g2
Category3~5を選択した場合はjpg,gifに対応するという具合です。


ご教授いただけると幸いです。
宜しくお願い致します。

投稿日時 - 2010-04-14 16:23:33

QNo.5825689

困ってます

質問者が選んだベストアンサー

ANo.1で回答した者です。お礼メッセージをありがとうございます。

言われたように書くと下記のようになりますが、このスクリプトでは Typeがjpg,gifの時に必ず Category = 5 になってしまいます。まだ条件が足りないと思うのですが・・・・

------------------------------------
if ($Type == 'jpg' || $Type == 'gif') {
$Media->Category = 1;
$Media->Category = 3;
$Media->Category = 4;
$Media->Category = 5;
} else if ($Type == '3gp' || $Type == '3g2') {
$Media->Category = 2;
}

投稿日時 - 2010-04-14 18:42:23

このQ&Aは役に立ちましたか?

8人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

>Category3~5を選択した場合はjpg,gifに対応する
この表現だと、Category の選択値が先にあって、それに応じて、type分岐ですよね?
その順なら switch でも、if でも
switch($Media->Category){
case 2: $Type ='3gp,3g2'; break;
case 1:
case 3:
case 4:
case 5: $Type = 'jpg,gif'; break;
default: ??
}
回答1の補足での 「Typeが先に決まります。」
だと、type一個にたいして、$Media->Category という変数がスカラー値(単一の数値や文字列)である前提ならば、複数のデータを入れられません。配列にすれば、複数保持は可能。
その場合は、$Media->Category データを利用するところを軒並み配列対応に変更が必要になります。

投稿日時 - 2010-04-15 15:29:20

お礼

皆さん、ありがとうございました。

投稿日時 - 2010-04-19 19:07:50

条件がよくわかりません。以下の点をお知らせください。

1.TypeとCategoryのどちらが先に決まるのですか?
2.Typeが先に決まるのだとしたら、Type=jpg/gifのとき、どのような条件でCategory=1,2,4,5の場合分けをすればよいのですか?
3.Categoryが先に決まるのだとしたら、Category=1/2/4/5のとき、どのような条件でType=jpg,gifの場合分けをすればよいのですか?

投稿日時 - 2010-04-14 16:43:44

お礼

回答ありがとうございます。
Typeが先に決まります。
Typeがjpg,gifの時に

$Media->Category = 1;
↑これに345を追加したいです。

宜しくお願い致します。

投稿日時 - 2010-04-14 16:54:31

あなたにオススメの質問