【PHP】下らねぇ質問はここに書き込みやがれ 56
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/10/11(木) 17:55:41ID:uObe69hrPHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 55
http://pc11.2ch.net/test/read.cgi/php/1191058556/
◆質問する時の注意
・ sage進行(メール欄にsageと記入すること)「sage進行」とはスレを目立つ上部に上げないことによって、荒らしが発見できないようにすることです
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
・ 書き込むときには、「公式マニュアル、リファレンス本は読みました」と明記すること
(でないと、公式マニュアル読めと煽られます)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
・質問者が「公式マニュアル読んだ」と書いていないからといって、
公式マニュアルに書いてもいないのに、公式マニュアルよめと適当なことを言わないこと。
質問者は公式マニュアルを読んでいるかもしれない。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0438nobodyさん
2007/10/18(木) 15:46:45ID:???0439nobodyさん
2007/10/18(木) 15:51:14ID:OvH6obTW$iが50文字以上場合のときに処理する場合はifでしてますけど、
switchですることは可能でしょうか?
switch ($i){
case ($iが50以上の場合): break;
default:
}
この場合、caseで比較するときは、===のみの比較なんですか?
0440nobodyさん
2007/10/18(木) 16:15:13ID:???==と同じ
>>436
あてずっぽで答えてあれなのだが
session.cache_limiterあたりが影響してるんじゃ?
0441nobodyさん
2007/10/18(木) 16:20:45ID:???何をしたいんだか何をいってるんだかよくわからない
とりあえずifでできることは基本的にswitchでもできる
===ってのは型の比較まで行う演算子
$iが50文字っていうのが謎
switchの中では50以上の場合と書いてるし
文字列の長さ(strlen)なのか数値なのかはっきりしてほしい
0442nobodyさん
2007/10/18(木) 16:36:17ID:???0443nobodyさん
2007/10/18(木) 16:38:01ID:???0445nobodyさん
2007/10/18(木) 17:15:34ID:ELaqevO/シングルクォート→? とエスケープして
$value = strtr( $value, array_flip( get_html_translation_table( HTML_SPECIALCHARS, ENT_QUOTES) ));
その後、戻す処理は ?→'
シングルクォートだけ取り残されてしまうのですが
なぜ039 39と違う表記にズレているのでしょうか?
php4環境で、元に戻す方法がおかしいでしょうか?
0446nobodyさん
2007/10/18(木) 17:15:55ID:???俺も気になったのでやってみたらデキタ
$dispMode = 0;
if (isset($_GET['mode'])) {
$dispMode = intval($_GET['mode']);
}
switch ($dispMode) {
case (10 < $dispMode) :
echo '10ue';
break;
case 5:
echo '5';
break;
default:
echo 'oth';
break;
}
0447nobodyさん
2007/10/18(木) 17:16:44ID:ELaqevO/シングルクォート→&#039;
戻す対象
&#39;→'
0448nobodyさん
2007/10/18(木) 17:38:20ID:???0449nobodyさん
2007/10/18(木) 17:47:09ID:???0450nobodyさん
2007/10/18(木) 18:05:45ID:???0451nobodyさん
2007/10/18(木) 18:46:24ID:???むむ、確かに動くな。
こんな仕様あったんだっけ。
foreach(array(1,2,3,4,5,6,7,8,9,10) as $dispMode) {
echo "$dispMode: ";
switch($dispMode) {
case (5 > $dispMode) :
echo "0-4\n";
break;
case (5 < $dispMode && $dispMode < 10) :
echo "6-10\n";
break;
case 5:
echo "5\n";
break;
default:
echo "other\n";
break;
}
}
実行結果:
1: 0-4
2: 0-4
3: 0-4
4: 0-4
5: 5
6: 6-10
7: 6-10
8: 6-10
9: 6-10
10: other
0452nobodyさん
2007/10/18(木) 18:52:27ID:???0453nobodyさん
2007/10/18(木) 20:02:58ID:???0456nobodyさん
2007/10/18(木) 22:01:11ID:???■[javascript]switch文のcaseは色々なものが書ける
http://d.hatena.ne.jp/ofk/20070627/1182919776
0459nobodyさん
2007/10/18(木) 22:06:51ID:???なんでこのスレって人を見下げたようなレスをする奴がわいて来るんだろうな?
0460nobodyさん
2007/10/18(木) 22:07:48ID:???0462nobodyさん
2007/10/18(木) 22:11:10ID:???0465nobodyさん
2007/10/18(木) 22:13:22ID:???クラスのことを教えたら、
そんなものつかったら可読性が下がるとか
言い出すコボラーですか?w
どんな構文でも適切に使えばいいだけの話でしょう。
0466nobodyさん
2007/10/18(木) 22:15:35ID:???行かないしw
だから、君はまた俺のレスを見ることになるよ。
ぐちぐちいうなよ? お前が消える以外に見ない方法なんて無いんだからw
0468nobodyさん
2007/10/18(木) 22:18:09ID:???0469nobodyさん
2007/10/18(木) 22:19:14ID:???他の言語でこんな書き方して
「動きません」とか「エラーになるんですけど」とか
言われたら正直泣いちゃうかも
0470nobodyさん
2007/10/18(木) 22:19:24ID:???それは、おまえの教えかたがヘタクソなんだよw
人に理解してもらえないからってボロクソに言う前に、
お前がクラスを理解するほうが先なんじゃね?
0471nobodyさん
2007/10/18(木) 22:21:00ID:???>他の言語でこんな書き方して
>「動きません」とか「エラーになるんですけど」とか
まさに>>468がそんな感じだな
定数しか書けないことを知って、だから○○はクソなんだ、とか言いそうw
0472nobodyさん
2007/10/18(木) 22:21:08ID:???あー、あなたのレスは実は、
PHPとあと一つ(?)の言語しか知らずに
「PHPが普通じゃない!」といったら
実は他にもそういう言語があって、
恥をかいたやつを笑っているんだな?w
0473nobodyさん
2007/10/18(木) 22:22:18ID:???メジャーなところでCやJavaやったことある人間なら痛感してるだろ
ここでPHPを執拗に擁護してるのはPHPしかやったことないだけちゃうんかと
0475nobodyさん
2007/10/18(木) 22:23:10ID:???0476nobodyさん
2007/10/18(木) 22:23:25ID:???まあ、現実は、他にも使える言語があるのに、
「だからPHPはクソなんだ。」と言っているやつが
いまここで恥かいているんだけどなw
0478nobodyさん
2007/10/18(木) 22:25:33ID:???うん、クソとは書いてないね。
同じような事言っているがw
453 名前:nobodyさん[sage] 投稿日:2007/10/18(木) 20:02:58 ID:???
まぁPHPは適当ですから普通じゃないことが普通なんです
455 名前:nobodyさん[sage] 投稿日:2007/10/18(木) 21:55:26 ID:???
>>451
PHPって気持ち悪いなー
0479nobodyさん
2007/10/18(木) 22:25:33ID:???なんで他の言語使うときにそういう質問したらだめなんだ?
不便で融通が利かない他の言語が悪いんだろ。
0483nobodyさん
2007/10/18(木) 22:29:23ID:???switchのところの変数って意味がないよね
0486nobodyさん
2007/10/18(木) 22:35:13ID:???手元のコンパイラで確かめてみた-> C & C++
case 2-1:
こういう書き方でも判定してるね
0488nobodyさん
2007/10/18(木) 22:41:22ID:???お前馬鹿か?
↓これのswitchのカッコの所をtrue/falseに切り替えて実行してみろ。
foreach(array(1,2,3,4,5,6,7,8,9,10) as $dispMode) {
echo "$dispMode: ";
switch(true) {
case (5 > $dispMode) :
echo "OK\n";
break;
default:
echo "\n";
}
}
caseに定数だけではなく、式が使用できることの何が悪いんだが、
0489nobodyさん
2007/10/18(木) 22:52:59ID:???言語なんて所詮道具なのにな
0492nobodyさん
2007/10/18(木) 22:57:53ID:???言語構造自体がスパゲティーになる
PHPはあれもこれもとC,Perl,Javaからとってきた感じで
それらのユーザに合わせるため関数名が違うだけで
同じ挙動するものとかがいくつかあったりで統一性がなかったり
0496nobodyさん
2007/10/18(木) 23:02:11ID:???なぜ、ifがあるのにswitchがあるか?
それはswitchのほうが見通しがいい場合があるから。
ここまでヒント言えばわかるだろ?
0497nobodyさん
2007/10/18(木) 23:04:52ID:???caseのあとに、定数だけじゃなくて、
文字列や関数を書きたくなったことあると思うんだがねぇ?
まだまだだな。
0498nobodyさん
2007/10/18(木) 23:06:07ID:???例がうかばないから、ヒントとかいって誤魔化しにかかりましたw
switch-caseは同じ変数との比較が多い場合に、ifより見通しがいいからだろ
例が出せないなら消えろよw
0501nobodyさん
2007/10/18(木) 23:09:03ID:???0503nobodyさん
2007/10/18(木) 23:10:09ID:???数値が2の場合、
数値が3の場合、
数値が4の場合、
数値が5〜10の場合、
数値が11〜20の場合、
数値が21の場合、
数値が22の場合、
俺ならswitch使いたくなるな。
0504nobodyさん
2007/10/18(木) 23:10:25ID:???0505nobodyさん
2007/10/18(木) 23:12:52ID:???http://blog.zuzara.com/2006/06/14/85/
0506nobodyさん
2007/10/18(木) 23:13:12ID:???その代償として様々な決まりというか制限がある。
範囲指定しての多岐分岐なんて人間には普通の表現。PHPやJSなどは人間に合わせてるからそれが出来るとか。
スレチだが勉強中のRubyでしてみたら不等式はダメだが別の方法でOKだった(ちなみに浮動小数点でもOK)。
(1..10).each {|dm|
print "#{dm}: "
case dm
when 5
puts "5"
when 0...5
puts "0-4 (0 <= dm < 5)"
when 5...10
puts "6-10 (5 < dm < 10)"
else
puts "other"
end
}
実行結果:
1: 0-4 (0 <= dm < 5)
2: 0-4 (0 <= dm < 5)
3: 0-4 (0 <= dm < 5)
4: 0-4 (0 <= dm < 5)
5: 5
6: 6-10 (5 < dm < 10)
7: 6-10 (5 < dm < 10)
8: 6-10 (5 < dm < 10)
9: 6-10 (5 < dm < 10)
10: other
0507nobodyさん
2007/10/18(木) 23:13:28ID:???0509nobodyさん
2007/10/18(木) 23:16:47ID:???そうそう。
この問題は本質的には、
caseの後に数値定数しか指定できないか、
(数値定数+文字列しか指定できないか、)
数値や文字列を含めた式すべてを指定できるかという話でしかない。
わざわざ数値や文字列に限定する必要は無いだろう。
その結果式として扱えるものならなんでも指定できる。
そういうことでしかない。
ちょっと詳しくなった程度のやつが、変だ変だというほど
変な仕様ではない。現にJavaScriptでも使える。
0510nobodyさん
2007/10/18(木) 23:17:34ID:???0511nobodyさん
2007/10/18(木) 23:18:31ID:???たいてい中途半端な知識しか
持ち合わせていない罠。
0512nobodyさん
2007/10/18(木) 23:20:08ID:???それは「ひとつの変数に対して何かと比較する」という意味で文法が一貫してるよね
phpの場合は、caseの中にぜんぜん関係ない変数が比較対象として持ち込めるのがねー
0513nobodyさん
2007/10/18(木) 23:20:23ID:???ほんと餓鬼ばっか
0514nobodyさん
2007/10/18(木) 23:21:06ID:???自分が嫌なら使わなければすむこと
0515nobodyさん
2007/10/18(木) 23:21:28ID:???NOVAが明日まで給料日の支払を延ばしたということは、
もしかして、いよいよ明日がNOVAのXデーっていうことも考えられるかな?
0516nobodyさん
2007/10/18(木) 23:22:17ID:???} elseif ( b() == null ) {
} elseif ( c() == null ) {
} elseif ( d() == null ) {
}
俺なら、== null は一度しか書きたくないな。
うん。switchつかう。
switch(null) {
case a() :
case b() :
case c() :
case d() :
}
0518nobodyさん
2007/10/18(木) 23:24:17ID:???> phpの場合は、caseの中にぜんぜん関係ない変数が比較対象として持ち込めるのがねー
ばーかばーか。関係ない変数? それが比較対象?
caseに中に式を入れられるって事でしかないんだよ。
難しくかんがえんなw
0522nobodyさん
2007/10/18(木) 23:28:27ID:???0523nobodyさん
2007/10/18(木) 23:31:00ID:???俺は>488が適切に使える例を希望した(>>494)が結局出てないようだが。
switchにtrue/falseを指定する例ってどこに出てたっけ?w
0524nobodyさん
2007/10/18(木) 23:31:06ID:???そうやって、すぐ攻撃的になるのが若いんだよ。
歳が若いというより脳が若いといった方が正確かもしれないが。
もっと冷静に自分を見つめ直しなさいね。秋の夜長、考える時間はいくらだってあるぞ(笑)
0525nobodyさん
2007/10/18(木) 23:31:26ID:???0529nobodyさん
2007/10/18(木) 23:36:55ID:???>まるで、それ以外の例はあるが
確かにcaseに関数をおいて適切に使えそうな例はあったけどな
結局、>>488の例は、ヒントで誤魔化して出せなかったんだろw
0530nobodyさん
2007/10/18(木) 23:38:09ID:???確かにcaseに関数をおいて適切に使えそうな例はあったけどな
確かにcaseに関数をおいて適切に使えそうな例はあったけどな
確かにcaseに関数をおいて適切に使えそうな例はあったけどな
確かにcaseに関数をおいて適切に使えそうな例はあったけどな
確かにcaseに関数をおいて適切に使えそうな例はあったけどな
これで終了じゃんw
0532nobodyさん
2007/10/18(木) 23:40:02ID:???>phpの場合は、caseの中にぜんぜん関係ない変数が比較対象として持ち込めるのがねー
じゃあ持ち込めるのが、何なのよ
0533nobodyさん
2007/10/18(木) 23:41:13ID:???どっか逝ってくれ
0535nobodyさん
2007/10/18(木) 23:54:25ID:???{
case "PHP Only":
print "この人、地雷かも…";
break;
default:
print "セーフティじゃね?";
}
こういう構図にさえならなければ、どうでもいいよ
0536nobodyさん
2007/10/18(木) 23:54:36ID:???>>483
>>そもそもcaseに条件式が書いてたら、
>>switchのところの変数って意味がないよね
が原因だろ?
case (5 > $dispMode) のような範囲指定(条件式)や
case is_float($test) みたいな関数使わざるを得ないこともあれば、単純に
case 5 のようなそのものズバリの場合もあるんだからswitchの場所に変数あってもいいでしょ。
仮に全てが条件式でもswitchに変数あった方が何を分岐させたいのかわかりやすいじゃん。
■ このスレッドは過去ログ倉庫に格納されています