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

【PHP】下らねぇ質問はID出して書き込みやがれ 115

レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん2012/01/20(金) 05:43:23.62ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 114
http://kohada.2ch.net/test/read.cgi/php/1325437405/

◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0951nobodyさん2012/02/25(土) 01:14:42.48ID:a/GXX7hd
メールを連続で送信する場合、マニュアルには、

>mail() 関数は、大量のメールをループ内で送信するには 向いていないことに注意しましょう。
>この関数は 1 通のメールを送信するたびに SMTP ソケットをいったん閉じて開きなおします。これは非効率的です。
>大量のメールを送信する場合は、 ≫ PEAR::Mail および ≫ PEAR::Mail_Queue パッケージを参照ください。

と記述してありますが、PEARを使いたくない場合、
ソケット関数で自分でSMTP処理を書くしか無いですよね?
0952nobodyさん2012/02/25(土) 02:43:21.75ID:???
実現できる方法でどうぞ。
「しか無い」ってのはよほどのことが無い限り無いと思ったほうが。
0953nobodyさん2012/02/25(土) 02:47:59.67ID:???
PEAR::Mail および PEAR::Mail_Queue で必要な箇所を参考・コピペする。
0954nobodyさん2012/02/25(土) 18:02:10.27ID:???
>>912
session_register()使う代わりに
$_SESSION に値をぶっこむのね
ありがとう!
0955nobodyさん2012/02/25(土) 18:56:47.63ID:1lZdYX8R
たとえばですが、
wire.jpというサイトがあります。
内容的には好きなんですが、相当重いサイトです。
こういったPHPで作られたサイトのパフォーマンスを
上げるためにはどうしたらよろしいでしょうか?
0956nobodyさん2012/02/25(土) 19:08:41.43ID:???
キャッシュでも作れば?
0957nobodyさん2012/02/25(土) 19:09:58.04ID:r6BFdbus
RSSからforeachで値を取得したのですが、それをループの外で一つの変数として扱いたいのですが、どうしたらいいでしょうか?

<?php
$array=array(1,2,3,4,5,);
foreach ($array as $value) {
$a=$value;
}
echo $a;
?>

例えばこのようにすると、当たり前ですが結果はループで上書きされて5と表示されます。
foreachで取得したものを一つの変数に入れることは出来ませんか?
0958nobodyさん2012/02/25(土) 19:25:22.22ID:???
>>957
よく分からんけど仮に3つ目の値が取りたいなら
echo $array[2];
0959nobodyさん2012/02/25(土) 19:53:18.83ID:???
>>957

print_r($array);
して表示結果を見てみなはれ

その上で$array[x] ←xのところに対応した数字をいれる。
で出てくる。
0960nobodyさん2012/02/25(土) 20:48:35.56ID:???
$a=$value;を $a[] = $value;
0961nobodyさん2012/02/25(土) 21:26:32.82ID:r6BFdbus
>>960ありがとうございます。
0962nobodyさん2012/02/26(日) 00:47:29.55ID:???
いいってことよ
0963nobodyさん2012/02/26(日) 00:48:27.77ID:???
ほい
0964nobodyさん2012/02/26(日) 00:52:26.79ID:nCX4lbdW
>>956
キャッシュとはどのようなキャッシュですか?
0965nobodyさん2012/02/26(日) 01:35:13.43ID:nCX4lbdW
キャッシュとは言語レベルのサポートですか?

wire.jpはWordPressみたいですから
WP Super Cacheプラグインみたいなプログラムレベルの
キャッシュのことを意味していますか?
0966nobodyさん2012/02/26(日) 01:42:08.72ID:???
( >д<)、;'.・ キャッシュン
0967nobodyさん2012/02/26(日) 01:47:59.96ID:nCX4lbdW
>>956
例としてあげてwired.jpはW3 Total Cacheが入っているようです。
それでも遅い場合はどうしたらよろしいのでしょうか?
0968nobodyさん2012/02/26(日) 01:48:34.31ID:???
>>966
bless you
0969nobodyさん2012/02/26(日) 01:53:36.51ID:???
Thank you!
0970nobodyさん2012/02/26(日) 01:58:30.12ID:???
phpでデータベースを扱うには、何かと方法がありますが
エクセルのシートで外部参照するみたいに、この列はこっちの
データベースから引っ張って、この列はこっちから
というように複数のデータベースから情報を引っ張って
統合して表示、または登録変更をするためには、どんな
方法を使うのが最も適しているのでしょうか?
0971nobodyさん2012/02/26(日) 02:07:02.73ID:???
>>967
オーバークロックしかないな
0972nobodyさん2012/02/26(日) 02:16:44.23ID:oisclph1
質問させてください。
自動返信メールの内容に値を持たせたいんですが
値の入っていないものは表示させないようにしたいです。

<?php
$MESSAGE = "
注文がありました。

商品    個数
[[りんご]]  [[1]]
[[みかん]]  [[0]]
[[ぶどう]]  [[3]]
";?>

実行すると

りんご1個
ーー(みかんの注文が0なので表示されず空白だけできてしまう)ーー
ぶどう3個

というメールが来てしまうで、みかんの部分を上に詰めさせたいです。

メールが来る仕組みなどは人がしたものなのでよく分かってません。
よろしくお願いします。
0973nobodyさん2012/02/26(日) 03:04:07.86ID:???
>>972
$cart=array("りんご"=>"1","みかん"=>"0","ぶどう"=>"3")

$MESSAGE = "注文がありました。\n\n商品    個数\n"
foreach($cart as $key => $val){
  if ($val>0){                          //$valが0以下の時は処理しない
    $MESSAGE.="[[$key]] [[$val]] \n"
  }
}

備考 POST情報はクライアント側で詐称できるので 値段を表示させる場合はPOSTさせないでDBに取りに行ったほうがいいと思うよ
0974nobodyさん2012/02/26(日) 03:34:02.05ID:oyzRHeH9
俺は自分でも結構オブジェクト指向イケてるんじゃないかと思ってたんだが、
今日クラスを作成していたときにクラス名に悩んで、
候補のものをググってたら、C#の同名のクラスが出てきたんだ。
どんなメソッドがあるのかな?とチラっとみてみたら、
俺がクラスに含める予定だった処理が別クラスで処理されていた。
徹底的に細かくオブジェクトを分けていることに俺はショックを受けて絶望した。
これが本当のオブジェクト指向なのかと。
自信が一気になくなった俺はこれからやっていけるでしょうか?
0975nobodyさん2012/02/26(日) 04:34:33.44ID:???
細かく分けることがオブジェクト指向・・・?
0976sage2012/02/26(日) 09:48:27.16ID:???
>>974
そもそも論として
phpでオブジェクト指向実装は後付けの中途半端だし、
最適化されていないのでパフォーマンス悪いよ。

それだったらJava、C#みたいな強制的オブジェクト指向言語で
勉強して方がいい。他の言語で役に立つから。
0977sage2012/02/26(日) 09:49:49.71ID:???
>>975
PHPerから見ると、
オブジェクト指向言語のクラス設計はすべてが細かく見えるかと。
0978nobodyさん2012/02/26(日) 10:03:42.64ID:???
他の言語って、これからいくつ覚えるつもりだよ
一生勉強ってかw
0979sage2012/02/26(日) 10:15:37.18ID:???
>>978
これからもphpオンリー?
スマホアプリとか大丈夫?

サーバーサイドオンリーの人だとしても、
phpだけだったら守備範囲が狭くならないかい?

たとえばfacebookみたいに

phpで作りました。

でもユーザー増えて負荷に耐えられなくなりました。

基幹をC++やJavaに切り替えました。

というケースは無いの?
0980nobodyさん2012/02/26(日) 10:22:20.60ID:???
>>977
そこが本質じゃないのにね
0981nobodyさん2012/02/26(日) 10:29:56.54ID:???
一生勉強って当たり前だろ
0982nobodyさん2012/02/26(日) 10:34:22.17ID:???
いや本質だろ。
継承や再利用を考えると重要。

それより次スレ
0983sage2012/02/26(日) 10:38:06.83ID:???
そもそも論として、
細かく設計するとPHPの場合すぐパフォーマンスが悪くなる。
いずれにしてもPHPのオブジェクト指向は中途半端で使いにくい。
0984nobodyさん2012/02/26(日) 10:39:22.25ID:???
例えばチャットクラスで
書き込みを行うwriteというメソッドがあったとする

PHPerの場合
ここに渡す引数はString型の$messageである

C#erの場合
ここに渡す引数は別クラスで作成したメッセージオブジェクトである
0985nobodyさん2012/02/26(日) 11:12:49.13ID:yp5CCX+k
メールアドレスの「@」より前を取得したいんですけど、自分では
$tmp = explode('@', $email);
$name = $tmp[0];
という書き方しか思い浮かびません。
もっと簡単にできる方法があれば教えて頂きたいです。
0986nobodyさん2012/02/26(日) 11:18:26.38ID:???
echo substr($email, 0, strpos($email, "@"));
複数行になるのが簡単ではないと考えてるなら考えを改めるべし
0987nobodyさん2012/02/26(日) 11:28:57.23ID:???
四年前の爺さんの背広からメガビックボーイが出てきたんだが
一生現役ってことを考えると一生勉強くらい普通だと思った。
0988nobodyさん2012/02/26(日) 11:31:05.44ID:???
preg_replace("/(?=@).*/","",$mail);
とか

explodeでいいと思うけどな
0989nobodyさん2012/02/26(日) 11:34:48.98ID:???
replaceだと元データのメアド使えなくなるやん
0990sage2012/02/26(日) 11:35:02.59ID:???
勉強したくないなら
なぜ潰しが効かない、汎用性が低いphpなのか不思議。
汎用性が高い言語選べばよかったのに。
0991nobodyさん2012/02/26(日) 11:39:39.13ID:???
どの言語でもできることとできないことがある
1つの言語習得すれば金輪際勉強せずに済む言語なんて皆無
0992nobodyさん2012/02/26(日) 11:46:01.70ID:???
>>980
>>1
0993nobodyさん2012/02/26(日) 11:49:03.94ID:???
しょうがないから建ててくるか
0994nobodyさん2012/02/26(日) 11:52:02.39ID:???
http://kohada.2ch.net/test/read.cgi/php/1330224598/
0995nobodyさん2012/02/26(日) 11:56:49.85ID:yp5CCX+k
>>986
ありがとうございます。助かりました。
複数行というより、わざわざ配列にするのが気持ち悪くて…。
0996sage2012/02/26(日) 12:01:13.12ID:???
>>974
phpのオブジェクト指向はなんちゃってレベルだから。
他の言語ではphpの経験は生かせないよ。
0997nobodyさん2012/02/26(日) 12:03:36.76ID:???
そいういうこと書いてるようじゃ
大してオブジェクト指向の考えというのを理解できてないな
0998nobodyさん2012/02/26(日) 12:08:49.02ID:???
>>996
>phpのオブジェクト指向
どれだけあほなこと言ってるかわかるか?もっと勉強しろ。
0999sage2012/02/26(日) 12:24:07.98ID:???
phpのオブジェクト指向機能の実装
1000sage2012/02/26(日) 12:25:05.67ID:???
PHPer、ダメポ。
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。