トップページ⇒php
1001コメント300KB

【PHP】下らねぇ質問はここに書き込みやがれ 45

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2007/04/27(金) 10:02:42ID:H9gF1SfB
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 44
http://pc11.2ch.net/test/read.cgi/php/1176364487/

◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0655nobodyさん2007/05/08(火) 14:36:56ID:???
printfとsprintf
の違いは何でしょうか?
PHPマニュアルでは、
sprintf:フォーマットされた文字列を返す
printf:フォーマット済みの文字列を出力する
とありますが、意味がよく分かりません。
0656nobodyさん2007/05/08(火) 14:43:43ID:???
フォーマットされた値がほしいだけなのに常に出力されたら困るやんか
0657nobodyさん2007/05/08(火) 14:46:41ID:???
>>656

早速の返信ありがとうございます。
Cと同じで良かったんですね。どうも、お手数お掛けしました。
0658nobodyさん2007/05/08(火) 14:51:18ID:???
本当にわかってるんだかわかってないんだか・・・
0659nobodyさん2007/05/08(火) 15:59:29ID:???
>>645
session_start()して$_SESSIONでI/Oしてるから
特に問題はなさそうな気がするけど
phpinfoでsession.save_pathってどこになってる?
そのディレクトリはちゃんと存在する?
0660虚弱PHP2007/05/08(火) 16:15:27ID:???
>>645
色んなところで$_SESSIONをvar_dumpかprint_rすればどこでデータなくなってるか分かるかと。
0661nobodyさん2007/05/08(火) 16:54:16ID:???
    FOX★公認!今世紀最大の祭り!!!
俺たちのクリックで日本を一位にしようぜ!!
“30年は日本に手は出せないな”という勝ち方をしたい
http://wwwww.2ch.net/test/read.cgi/news4vip/1178602852/

1. チリ 136,836,018
2. ポーランド 135,173,390
3. イスラエル 80,308,719
4. ★日本 71,029,997★
5. スロベニア 56,818,986
6. フィンランド 40,275,252
石を投げる戦争から人は進化・進歩を遂げ、剣や槍などの武器をもって戦うようになった
人間はさらに発展し兵器を使う戦争を始めた
そして今、指先一つを武器とした電脳戦争が勃発したのであった・・・
皇国を勝利へと導くには貴様らの参戦が不可欠である
・戦場
http://www.clickclickclick.com/default.asp
・まとめサイト
http://www33.atwiki.jp/clickvip/
・mixi
http://mixi.jp/view_community.pl?id=2141035
0662nobodyさん2007/05/08(火) 17:50:46ID:8RlmlJO8
こんなスレにまで張られるとは
0663nobodyさん2007/05/08(火) 18:00:01ID:???
日本人は暇人なんだなって思われるだけだな。
0664nobodyさん2007/05/08(火) 18:48:04ID:cGr79y4f
>>662
>>663
レスすんなよカス2匹
0665nobodyさん2007/05/08(火) 19:07:54ID:???
今Sn Uploaderを使って
UpLoader作成して
Upできるようにはなったんだが
ブログにリンクはるとアクセスできませんって
でるんだが
原因なにかわかりますか?
使ってるレンタルHPは
infoseek
0666nobodyさん2007/05/08(火) 19:11:42ID:???
それだけじゃ、全然わからん
0667nobodyさん2007/05/08(火) 19:17:16ID:???
並みのエスパーではわからん。
スーパーエスパーが必要
0668nobodyさん2007/05/08(火) 19:18:21ID:???
すまん
PHPじゃなくてPerlでした
質問とりさげます
0669nobodyさん2007/05/08(火) 19:28:20ID:???
スーパーエスパーもびっくり
0670nobodyさん2007/05/08(火) 19:39:36ID:???
その前に句読点覚えようぜ。頭悪く見える。
0671nobodyさん2007/05/08(火) 19:39:38ID:???
スーパーエスパー3でないと分からんな
0672nobodyさん2007/05/08(火) 20:01:07ID:???
PHPとかPerlの垣根以前の問題だろうに
0673nobodyさん2007/05/08(火) 20:47:26ID:T0+r/ZNA
アクセサについて質問なんですが、
これはプロパティとも呼ばれるもので、
クラス内のprivateメンバ変数が、外部からの操作を直接できないように、
間接的にアクセスするための仕組みなようなものという認識であっていますか?

Javaの参考サイトや、Wikipediaにはこのようなことが書かれていたのですが、
(自分勝手に解釈してる部分があるので、実際に書かれている意図とは違うかもしれません)
某PHP5の解説サイトでは、

>アクセサとは、未定義のメンバー変数やメソッドに対してアクセスがあった場合、
>あらかじめ用意しておいたメソッドを実行する機能である。

といった説明もあったりして、PHPではアクセサの意味が違うのかな?と思っています。
それとも両者とも正しい説明なのでしょうか?

OOPに詳しい方、ぜひこれぞアクセサだという説明をしていただけませんでしょうか?
よろしくおねがいします。
0674nobodyさん2007/05/08(火) 20:50:16ID:???
__getとか見るべ
0675nobodyさん2007/05/08(火) 20:57:31ID:zeXB/nU1
ヘッダに付くPHPのバージョン番号を隠す方法を教えて下さい
前にどこかで見た気はするのですが…
0676nobodyさん2007/05/08(火) 20:58:01ID:???
すいません
PHPを作ってファイルをアップするとき
掲示板はどうしますか?
原因がわかりません・・・
0677nobodyさん2007/05/08(火) 21:00:35ID:???
>>676
日本語でおk
0678nobodyさん2007/05/08(火) 21:03:25ID:???
>>676
超質問だな
0679nobodyさん2007/05/08(火) 21:08:25ID:???
>>675
http://jp.php.net/manual/ja/ini.core.php#ini.expose-php
0680nobodyさん2007/05/08(火) 21:25:36ID:???
>>673
結論から言うとPHPでは意味が違う。
PHPでいうアクセサはマジックメソッドの__get()及び__set()。
これらは存在しないメンバ変数をコール、
または存在しないメンバ変数に割り当てようとしたときにオートコールされるもの。

んで普通アクセサというとその認識で概ね合っている。
Javaだとアクセサとはいうもののただのメソッド
06816802007/05/08(火) 21:27:00ID:???
ごめん途中で送信しちゃった。
Javaだと構造的にはただのメソッドと変わらないような物らしいから、
C#のプロパティとかがアクセサのイメージとしては一番近いんじゃなかろうか。
0682nobodyさん2007/05/08(火) 21:46:16ID:???
__getや__setって本来使うべきものじゃないっしょ?
06836732007/05/08(火) 21:49:04ID:T0+r/ZNA
>>680
どうもお答えありがとうございます。
おかげでモヤモヤがとれました。
イメージが近いとのことなので、早速C#のプロパティについても調べたいと思います。
0684nobodyさん2007/05/08(火) 22:17:43ID:j3fFuUxd
メソッドのforeachとかによく使う配列があんだけど、
毎回そいつをいちいち書くのだるいから、
define("XYZARR",array("X","Y","Z"))ってやったけどだめだったよ。
$GLOBALS["xyz"]=array(ry とかで参照させるしかねぇのかな?
0685nobodyさん2007/05/08(火) 22:18:28ID:???
メンバ変数にすりゃいいじゃない。
0686nobodyさん2007/05/08(火) 22:24:17ID:???
クラスって何なのか分かってない悪寒

(ついでに言えばdefineのページくらい見れよ)
0687nobodyさん2007/05/08(火) 22:24:20ID:j3fFuUxd
>>685 $this->xyz よし、短い。採用します。どうもです。
でもdefineっぽくもっと汎用で使えないかなぁと言ってみます。
まぁ最上位のクラスのプロパティにすればほぼ問題ないだろーけど。
0688nobodyさん2007/05/08(火) 22:26:05ID:j3fFuUxd
>>686 説明不足すまん。
いろんなクラスのメソッドで使ったりとか、
とにかくいろいろ用途が多いってことなんすよ。
0689nobodyさん2007/05/08(火) 22:28:46ID:???
だったらオブジェクト設計の問題じゃん
無理やり定数やらグローバル変数で使いまわすならクラスの意味ないし
なんて言ってみるξ゚�听)ξ
0690nobodyさん2007/05/08(火) 22:30:57ID:???
定数ですむものは定数のほうがいいよ。
0691nobodyさん2007/05/08(火) 22:31:12ID:???
>>679
ありがとうございました
「これは全くセキュリティ上の脅威ではなく、サーバ上 で PHP を使用しているかどうかを調べられるようにするものです。」
と書いてるけど、
バージョン固有のセキュリティーホールが発見された時には
それなりの脅威になりますよね?
0692nobodyさん2007/05/08(火) 22:31:43ID:aq8SRoA2
おまえらってさ日常で笑ったりしてますか?
0693nobodyさん2007/05/08(火) 22:33:51ID:???
は?笑わない人っているの?
0694nobodyさん2007/05/08(火) 22:36:30ID:???
既出だがこれぐらいは読んどけよくずども
http://bugs.php.net/
0695nobodyさん2007/05/08(火) 22:36:39ID:j3fFuUxd
>>689 俺の勝手なイメージだけどメンバって、オブジェクトのなかで
値をうにょうにょ変えていく存在という感じがする。
initVarとかsetVarとか汎用で作ってさ。
不動なものはもっとdefineみたいにどっしり構えてほしかったのさ。
0696nobodyさん2007/05/08(火) 22:42:52ID:???
真面目にやりたいならイメージ正したほうがいいと思うよ
勝手なイメージで開発て
0697nobodyさん2007/05/08(火) 22:49:32ID:???
クラス内で使いたいならオブジェクト定数使え。
なんていうか無理してクラス使う必要ないんじゃね?
0698nobodyさん2007/05/08(火) 22:50:05ID:j3fFuUxd
>>696 そうは言っても不動な値をメンバにすると、
固定された値のくせにオブジェクトの数だけメモリにのっちまうだろ?
やっぱり設計としてどーかと思う。
0699nobodyさん2007/05/08(火) 22:55:13ID:???
staticにすりゃできるが
お勧めしない

ID:j3fFuUxdの気持ちはわかる
匿名関数がカスでアクティベーションできないから、処理を小分けにしにくい
0700nobodyさん2007/05/08(火) 23:15:53ID:j3fFuUxd
>>699 今staticに変更したけどやっぱりその設計もいろいろとめんどかったです。
以下のうちどの設計が最善でしょうか?
1.arrayぐらい毎回書く
2.毎回メモリにのるけど大した量じゃないしメンバで。
3.$GLOBALSにいれる。めんどくささは1と大差ない気がする。

ちなみにオブジェクト30個ぐらい扱って計算させてます
0701nobodyさん2007/05/08(火) 23:25:11ID:???
どのくらいのサイズだよ
0702nobodyさん2007/05/08(火) 23:27:08ID:j3fFuUxd
>>701 float変数が3つだけです。
3次元座標系の粒子の処理を得意だったPHPで書こうかなーと。
0703nobodyさん2007/05/08(火) 23:29:35ID:???
余計なおせっかいかもしれないけど
どういうオブジェクト設計になってるのかも教えてくれたほうが適切なアドバイスができる気がする
0704nobodyさん2007/05/08(火) 23:36:46ID:j3fFuUxd
>>703
デザインパターンとかはわからないんで、長々とありのままを書くと、
とりあえず最上位には二つのクラス。
objectクラスとobjecthandlerクラス。handlerは複数のオブジェクトの処理や、
データファイルから読みだすときに使うクラス。

objectクラスの下にcoordinateクラスがあり、座標の処理をしている。
スカラー倍とか。
複数データの座標処理にはcoordinatehandlerていうクラスもある。
二点の距離や三点の角度などはここ。

で、それらの下にatomクラスとatomhandlerクラスがあって、
粒子の各プロパティもメンバ変数に入る、という設計。

見当違いだったらごめん。
0705nobodyさん2007/05/09(水) 00:42:20ID:???
で,定数で使いまわしたいfloat型3つ入ってる配列は?
0706nobodyさん2007/05/09(水) 01:41:53ID:???
お前等なら、どう書く?

>1から100までの数をプリントするプログラムを書け。
>ただし3の倍数のときは数の代わりに「Fizz」と、
>5の倍数のときは「Buzz」とプリントし、
>3と5両方の倍数の場合には「FizzBuzz」とプリントすること。

どうしてプログラマに・・・プログラムが書けないのか?
http://www.aoky.net/articles/jeff_atwood/why_cant_programmers_program.htm
0707nobodyさん2007/05/09(水) 01:53:48ID:???
>>706
foreach(range(1,100) as $i) {
 $p = '';
 if(! ($i % 3)) $p .= "Fizz";
 if(! ($i % 5)) $p .= "Buzz";
 print (($p)? $p: $i) . "\n";
}
0708nobodyさん2007/05/09(水) 01:58:17ID:???
for ($i=1; $i<=100; $i++) {
if ($a = $i % 3 == 0) echo 'Fizz';
if ($b = $i % 5 == 0) echo 'Buzz';
if (!$a && !$b) echo $i;
echo '<br/>';
}
最後のやつが厄介だね
0709nobodyさん2007/05/09(水) 02:01:52ID:???
for($i =1;$i <= 100 ; $i++){
$str = $i;
if($i % 3 == 0) $str = "Fizz";
if($i % 5 == 0) $str = "Buzz";
if($i % 3 == 0 && $i % 5 == 0) $str = "FizzBuzz";
echo "$str<br>\n";
}
0710nobodyさん2007/05/09(水) 02:21:31ID:???
効率悪いかきかただな、どいつも

もっとシンプルにできると思うのだが
0711nobodyさん2007/05/09(水) 02:26:42ID:???
じゃ書けよw 何なんだお前はw
0712nobodyさん2007/05/09(水) 02:28:08ID:???
forを使う時点でまちがってるからね
明日答えをかいてやる
0713nobodyさん2007/05/09(水) 02:28:27ID:???
シンプルさを追求するのはやめれ
0714nobodyさん2007/05/09(水) 02:28:56ID:???
まあヒントくれてやるけどこの場合はwhileつかえよ
0715nobodyさん2007/05/09(水) 02:29:16ID:???
>>712
明日て
駄目じゃんw
0716nobodyさん2007/05/09(水) 02:29:37ID:???
とりあえずきさまら3流どもははやくねろw
0717nobodyさん2007/05/09(水) 02:30:47ID:???
これを明日とかいうやつが他人を3流呼ばわりってネタだろ
0718nobodyさん2007/05/09(水) 02:31:53ID:???
forを選択するおまえらにネタといわれたくないなw
0719nobodyさん2007/05/09(水) 02:33:33ID:???
何も言わずにコードだけ貼れば要らんレス付かないのに
要領悪いな
0720nobodyさん2007/05/09(水) 02:38:40ID:???
この場合はfor使うのが適切だろ
foreachでもいいけど
0721nobodyさん2007/05/09(水) 02:44:36ID:???
乗り遅れた。ヘタレですみません。

for ($i = 1; $i <= 100; $i++) {
  if ($i % 3 == 0 && $i % 5 == 0) {
    echo 'FizzBuzz';
  } elseif ($i % 3 == 0) {
    echo 'Fizz';
  } elseif ($i % 5 == 0) {
    echo 'Buzz';
  } else {
    echo $i;
  }
}
0722nobodyさん2007/05/09(水) 02:48:31ID:???
こんなのはよっぽど変なことしなければどう書こうが誤差の範囲
可読性やスピードに注意を向ければよろし
0723nobodyさん2007/05/09(水) 02:50:23ID:???
>>706
そもそも「プログラムが全く書けない応募者」をフィルタするための問題だから
そこに高度さは必要ないだろ…
何で無駄ハック大会みたいになってんだよ
0724nobodyさん2007/05/09(水) 02:51:40ID:???
フラグ使うのは邪道?
3と5の倍数判定でそれぞれフラグをセットして、両方がtrueならFizzBuzz
0725nobodyさん2007/05/09(水) 02:51:42ID:???
書けない奴が何で応募してきたのかが気になるな
というかそもそも本当の話なのか…?
日本でもそんなもんなん?
0726nobodyさん2007/05/09(水) 02:51:53ID:???
俺からしたら>>707は暗号だ・・・
0727nobodyさん2007/05/09(水) 02:59:12ID:???
>>724
>>708は?

>>710
しばらく考えなきゃ書けない時点であまり価値はないよw
0728nobodyさん2007/05/09(水) 03:02:31ID:???
>>725
日本では英文科出ても英語はなせない、技術系の専攻でもプログラム書けないなんてよく聞くけど。
卒業の厳しいアメリカではそんなことないのかと思っていたが違うんだな。
0729nobodyさん2007/05/09(水) 03:05:12ID:???
経験者募集!って一言書けばいいだけじゃね?
07307242007/05/09(水) 03:06:16ID:???
>>727
見えてなかったorz
0731nobodyさん2007/05/09(水) 03:18:09ID:???
>>706を条件文と配列だけで書こうと思ったがうまくできなかった。
もし書ける人いたら今後の参考に使いたいからよろしゅう。
0732nobodyさん2007/05/09(水) 03:20:33ID:???
誰が見ても分かりやすい素直なプログラム書ければOK
オナニープログラマーはいらん
0733nobodyさん2007/05/09(水) 03:22:33ID:???
この板見てるのって趣味でやってるオナニープログラマーだけじゃないの?w
0734nobodyさん2007/05/09(水) 03:23:28ID:???
>>731
ほい

$nums = range(1,1000);
if ($a = $nums[0] % 3 == 0) echo 'Fizz';
if ($b = $nums[0] % 5 == 0) echo 'Buzz';
if (!$a && !$b) echo $nums[0];
echo '<br/>';
if ($a = $nums[1] % 3 == 0) echo 'Fizz';
if ($b = $nums[1] % 5 == 0) echo 'Buzz';
if (!$a && !$b) echo $nums[1];
echo '<br/>';
if ($a = $nums[2] % 3 == 0) echo 'Fizz';
if ($b = $nums[2] % 5 == 0) echo 'Buzz';
if (!$a && !$b) echo $nums[2];
echo '<br/>';
:
:
以下$num[999]までやればおk
0735nobodyさん2007/05/09(水) 03:25:52ID:???
1000に増えててワロタ
0736nobodyさん2007/05/09(水) 03:28:09ID:???
range(1,1000)とか無駄にメモリ喰うだけだろバッキャローが
素直になれよ
そして四つんばいになれよ
0737nobodyさん2007/05/09(水) 03:31:23ID:???
倍数判定で毎回modするより
カウンタを何種類か持たせて0判定の方が速そう
0738nobodyさん2007/05/09(水) 03:34:25ID:???
それはいいね
速いかとか効率いいかは分からんけど違う手法でやってみるのも面白そうね
0739nobodyさん2007/05/09(水) 03:50:10ID:???
作ってはみたけれど、ネタとしても面白くなかった…
$expr = '';
for ($i = 1; $i <= 100; $i++) {
$expr .= <<< TEXT
if (¥$a = $i % 3 == 0) echo 'Fizz';
if (¥$b = $i % 5 == 0) echo 'Buzz';
if (!¥$a && !¥$b) echo $i;
echo '<br/>';
TEXT;
}
eval($expr);
0740nobodyさん2007/05/09(水) 03:51:09ID:???
え,それは何のために・・・?
0741nobodyさん2007/05/09(水) 05:43:07ID:???
こんなん

for ($i = 1; $i <= 100; $i++, $s = ($i % 3 == 0) ? "Fizz" : "", $s .= ($i % 5 == 0) ? "Buzz" : "", $s = ($s != "") ? $s : $i) echo $s."<br>\n";
0742nobodyさん2007/05/09(水) 05:45:53ID:???
>>710>>712
ああ、なるほど。こういう人が>>706のリンク先で書かれてる
> 自称上級プログラマが答えを書くのに10-15分もかかっているのを見たこともある。
という現場で使い物にならないバカちんなんだ。
まさかそんな人が…と思ったが実によく理解できた。
0743nobodyさん2007/05/09(水) 05:47:30ID:???
>>741
>>707を無理やり1行で書いただけじゃんww
0744nobodyさん2007/05/09(水) 06:07:58ID:???
>>742,743
実は会社で「お前が一番使い物にならない」と言われてんじゃw
0745nobodyさん2007/05/09(水) 06:10:50ID:???
>>741
っていうかこんなコード、仕事じゃ使えないだろ。
0746nobodyさん2007/05/09(水) 06:25:39ID:???
もうわかったから、実は会社で「お前が一番使い物にならない」と言われてるって
0747nobodyさん2007/05/09(水) 06:43:56ID:6zAvWwo5
ソースからリンク先アドレスを抽出したいのですが
いい方法ないですか?
0748nobodyさん2007/05/09(水) 06:53:55ID:???
>>736
いまどき1000個の配列でメモリ気にされてもね
どんだけショボイマシン使ってるんだ
0749nobodyさん2007/05/09(水) 06:58:24ID:???
そういう問題じゃないだろう…
カウントするだけのために配列作ること自体がセンスない
0750nobodyさん2007/05/09(水) 07:34:19ID:???
処理が分かりやすくてバグが出にくいようになってればどっちでもいいよ
0751nobodyさん2007/05/09(水) 08:54:57ID:MkwX/1Mg
メールボックスのメールにPHPでフラグをつけたいのですがうまくいきません。
現在はまた関数をチェックしてテストしてる段階なのですが、例えば、

1 簡単なスクリプトでヘッダ一覧を取得してみる→既読フラグは0
2 別のスクリプトで本文を取得してみる→オプションを指定しない場合既読フラグがつくはず
3 もう一度ヘッダ取得→既読フラグは0のまま
4 意図的にフラグをつけてみる→imap_setflag_full前後で既読フラグは0→1に変わったのを確認
5 もう一度ヘッダ取得→既読フラグは0のまま(0に戻ってる?)

ブラウザからの操作なので履歴が表示されているのかとも疑ったのですが、そうではないようです。
メールボックスがある鯖の設定も関係してるのか・・・一応複数のメールボックスで試したのですが。
上記のような手順でつけたフラグって固定しないもんなんでしょうか。。
0752nobodyさん2007/05/09(水) 09:03:49ID:???
>>751
よく分からんけど、切断時に更新処理みたいなのはされてるのかな
0753nobodyさん2007/05/09(水) 09:06:58ID:izHSsw10
もとのログがサニタイズされたりされなかったりしてるデータを弄るときに
htmlspecialchars($str, ENT_QUOTES)かけると
< → &lt; → &amp;lt;
って当然なっちゃうんだけどサニタイズ済みの時は弄らないにはどうすればいいの?
07547512007/05/09(水) 09:40:37ID:MkwX/1Mg
>>752
明示的な更新はしていません。
オプションで「更新しない」を指定できるのを確認してるので
特に指定しなければ更新されるはずだと思っているのですが・・

>>753
自前で処理するしかないんじゃないですかね。
&で分割して、各要素にhtmlspecialchars()をかけ、&をつけて文字列に戻す、みたいな。
0755nobodyさん2007/05/09(水) 09:45:30ID:???
>>754
PHPの処理をPOP3のコマンドの対応を考えてみる。
なにか不足してないか?

まあ、ソースを晒さずにどこまで進むか試してみようw
■ このスレッドは過去ログ倉庫に格納されています