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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2012/02/26(日) 11:49:58.54ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

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

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

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

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0514nobodyさん2012/03/11(日) 00:06:39.40ID:???
>>513
いいよ。何聞きたいの?
0515nobodyさん2012/03/11(日) 00:09:57.40ID:???
>>475
さっさと答えてくれませんか?
05164752012/03/11(日) 00:27:37.57ID:???
分かりません。
ごめんなさい
これでいいんでしょ
0517nobodyさん2012/03/11(日) 00:29:37.74ID:???
質問した奴はよっぽど悔しかったんだな
0518nobodyさん2012/03/11(日) 00:40:03.17ID:???
だろうな。質問したらなんでも得れるとでも思ってるんでしょうな。
典型的なゆとりっすな
0519nobodyさん2012/03/11(日) 04:06:37.88ID:???
いつものやつだろ
ほっとけ
0520名無しさん2012/03/11(日) 17:29:34.13ID:pFTcjAB+
さっきちょっと検索の醍醐味が薄れてきた気分になった。
05215052012/03/11(日) 20:03:10.11ID:6FUbVztn
アメブロ等の検索システムは、記事のタイトルと本文を
データベースに記録してあり、それの検索をphpでlikeを
使い検索ということでしょうか?
0522nobodyさん2012/03/11(日) 20:05:06.17ID:???
>>521
知るか。アメブロに聞け。
0523nobodyさん2012/03/11(日) 20:32:11.92ID:Ul7q+mz0
>>505 >>521
「全文検索」で情報を漁ってください。

>>506
ごくごく小規模な用途限定のやり方ですね。
0524nobodyさん2012/03/11(日) 20:40:34.34ID:???
>>523
小規模って具体的にどれくらい?
0525nobodyさん2012/03/11(日) 20:41:25.72ID:Ul7q+mz0
>>500
想像がつく範囲で試しても、想定漏れがありそうで怖いので聞いてみました。

(A)「parent::method」という書き方は(B)「class::method」という書き方に似ていて、
(B)だとオブジェクト変数にアクセス出来ないので、それと同じ制限があるのかと
思いましたが、試したところ、その制限はありませんでした。

なので
「$this->親クラスのコンストラクタ」と「parent::親クラスのコンストラクタ」は
同じ動作なのかと思ったのですが、一応、識者に聞いてみたかったのです。

>>501
違うのですね。
どこが違うのかポインタ教えていただけるとありがたいです!
0526nobodyさん2012/03/11(日) 20:43:44.85ID:???
>>524
大規模になるとこんなもの使う↓

http://www.atmarkit.co.jp/fjava/rensai4/hadoop_tm01/01.html
0527nobodyさん2012/03/11(日) 20:44:25.20ID:???
>>524
小規模の定義を聞いてるんだが
0528nobodyさん2012/03/11(日) 20:44:35.81ID:???
間違えた>>526
0529nobodyさん2012/03/11(日) 20:48:41.52ID:???
>>528

>>523でも>>526でもないが

小規模とは>>521に書いてある「phpでlikeを使い検索」で間に合うレベル。
0530498=523=5252012/03/11(日) 20:49:14.66ID:Ul7q+mz0
>>524

サーバー構成と応答の許容時間によります。

「like '%xxxx'」のように、検索文字列の前に「%」を付けると索引が使われない
ため、テーブルを全件見に行かないといけなくなり、件数やサーバーの能力に
応じた時間がかかってしまうためです。

索引に頼ることができないため、データベースのデータが確実にメモリーに
キャッシュされるチューニングをした上で、メモリー容量まではある程度高速に
検索ができますが、それを超えると極端に遅くなっていきます。
0531498=523=5252012/03/11(日) 20:57:36.15ID:Ul7q+mz0
>>502
悪くは無いですが、if(isset($_POST)){} じゃないとinfoログが出ます。
0532nobodyさん2012/03/12(月) 00:31:59.22ID:JEbP5xt5
for文を使いループで一つ2行あるテーブルを作るにはどうすればいいのでしょうか?

-------- -------- -------  --------
|     | |     | |     | |      |
|     | |     | |     | |      |
-------- ------- --------- ---------  

-------- -------- -------  --------
|     | |     | |     | |      |
|     | |     | |     | |      |
-------- ------- --------- --------- 

このように、4つめになったら改行をする、と言う風にしたくて、
一応それはできたのですが、

-------- 
|     | 
|     | 
|-------|
|     |
|-------|

こんな感じに一つ一つを二行にして、横に並べ4つ目で改行、とするにはどうすればいいのでしょうか?
下手で分かりにくいかも知れませんが、教えてください、お願いします。
0533nobodyさん2012/03/12(月) 00:39:13.52ID:???
>>530
理由じゃなくて目安を聞いてるんだけど・・・。
コンピュータと話してるんじゃなくて人間と話してるんだぜ。
0534nobodyさん2012/03/12(月) 00:58:28.68ID:???
またお前か
0535498=523=5252012/03/12(月) 01:08:28.65ID:pwdc/TOi
>>533

目安を書いてますよ。
データベースサーバーがキャッシュ可能なメモリー容量までです。
レコード長でわり算してみてください。

あなたの環境のことは私にはわかりません。
メモリーが500GByteでレコード長が1byteなら500G行までです。
0536498=523=5252012/03/12(月) 01:14:20.88ID:pwdc/TOi
>>532
テーブルというのはHTMLのテーブルですか?
良くわからないので、欲しい結果をHTMLで書いてみてはどうでしょうか。
0537nobodyさん2012/03/12(月) 01:18:06.28ID:Ik+kB/Cp
PHPでオブジェクト指向プログラミングを行うとき、
標準関数群はどのクラスに属していると考えればよろしいのですか?
0538nobodyさん2012/03/12(月) 01:21:36.89ID:???
>>530
中間一致でインデックスが使われないDBに限定した話ですかね。
0539nobodyさん2012/03/12(月) 01:26:33.43ID:???
googleページを解析してたらphpエディタが固まった サクラエディタは何ともないのに
あいつらやっぱり変態だわ
0540nobodyさん2012/03/12(月) 01:27:44.82ID:???
>>538
ほとんどのDBは
中間一致でインデックスは使われません。
だから特殊なDBが必要になる。
0541498=523=5252012/03/12(月) 01:30:42.38ID:pwdc/TOi
>>538
標準的なRDBMSの場合で書きました。
「中間一致でインデックスが使われないDB」ではないDB、
つまり全文検索機能がある場合(使用する場合)は、
もちろんこの限りではありません。

という意味で、
>>523 で、「「全文検索」で情報を漁ってください。 」と書きました。
0542nobodyさん2012/03/12(月) 01:38:12.49ID:???
>>536PHPで書いたソースは、めちゃくちゃかも知れませんがこんな感じです。

<?php
$data=array(1,2,3,4,5,6,7,8,9,10,11,12,13,14);
echo "<table border>" . "<tr>";
for($i=0,$n=count($data);$i<$n;$i++){
if (($i % 5) == 4) {
echo "</tr>"."<tr>";
} else {
echo "<td width=\"160\">" . "あ" ."</td>";
}
}
?>

<html><body>
<table border>
<tr><td>タイトル1</td><td>タイトル2</td>
</tr><tr><td>あ1</td><td>あ2</td>
</tr></table>
</body></html>

欲しい結果は、画面表示だけみればこのように、上下セットでとなるものを作りたいです。
そしてループで横に並べ4つめで改行、と言う風にしたいです。
0543nobodyさん2012/03/12(月) 01:58:23.27ID:???
>>542
<hr>で区切るか<br>で改行とか装飾は<span>でっていうのがシンプルで管理も楽かなーと思う
<tr><td><span class='title'>タイトル1</span><hr>あ1</td><td>タイトル2<hr>あ2</td>
0544498=523=5252012/03/12(月) 02:28:01.78ID:pwdc/TOi
>>542
こんな感じ?
<?php
$data=array(1,2,3,4,5,6,7,8,9,10,11,12,13,14);
$i = 0;
echo '<html><body><table>' . "\n";

foreach($data as $value)
{
  $i++;
  if(($i % 4)===1){
    $line1 = '<tr>';
    $line2 = '<tr>';
  }

  $line1 .= sprintf('<td>タイトル%s</td>', $value);
  $line2 .= sprintf('<td>あ%s</td>', $value);
  
  if(($i % 4)===0 or $i===count($data)){
    echo $line1 . '</tr>' . "\n";
    echo $line2 . '</tr>' . "\n";
  }
}
echo '</table></body></html>' . "\n";
?>
0545nobodyさん2012/03/12(月) 16:49:26.43ID:???
今yum死んでる?アップデートもインストールもできない
05465452012/03/12(月) 16:51:27.16ID:???

すみません。誤解な上にスレチでした。
0547nobodyさん2012/03/12(月) 17:40:16.66ID:???
はやてのようにあらわれて
0548nobodyさん2012/03/12(月) 18:01:36.44ID:JEbP5xt5
>>543-544ありがとうございました。
0549nobodyさん2012/03/12(月) 18:39:29.58ID:???
いいってことよ
0550nobodyさん2012/03/12(月) 20:15:15.33ID:???
剰余の計算で===とかw
0551nobodyさん2012/03/12(月) 20:32:13.57ID:???
いくつかの突っ込みどころの中でそれを選んだ>>550はすごいな
0552nobodyさん2012/03/12(月) 20:34:11.33ID:???
比較演算子は、そっちで書ける限りそっちのほうが早いし間違いも無い。

笑うのはありえない。
0553nobodyさん2012/03/12(月) 20:37:48.54ID:???
>>552
書ける限り早いってどういうこと?
0554nobodyさん2012/03/12(月) 20:46:32.39ID:???
===ではなくて ==と書きたいこともあるだろう?
そうでなくて、厳密な比較でいい場合はってこと。
0555nobodyさん2012/03/12(月) 21:02:03.44ID:???
==で書いてるコードって今時あんの?
0556nobodyさん2012/03/12(月) 21:08:10.22ID:???
PHP以外というかコンパイラ言語なら==が普通だろ
PHPerルール押し付け(・A・)イクナイ!!
0557nobodyさん2012/03/12(月) 21:09:35.85ID:???
誰も他の言語の話してないしよ
PHPの==と===の違いを理解してから言ってくれ
0558nobodyさん2012/03/12(月) 21:09:37.11ID:???
>>554
いやだから何が早いのかさっぱり分からんが。
判断速度が?記述速度が?処理速度が?
0559nobodyさん2012/03/12(月) 21:14:00.61ID:???
理解してなきゃコンパイラ言語と言わんわ
0560nobodyさん2012/03/12(月) 21:15:40.79ID:???
for ($i=0;$i<count($array);$i++)
とかもそうだな
外に出せとかいうやついるよな
CやJava使いが簡単に使えるような仕様にしてんだから
そいつらにすれば余計なお世話だ
0561nobodyさん2012/03/12(月) 21:26:47.21ID:???
>>558
あいまいな比較は、厳密な比較より遅いってだけの話だよ
0562nobodyさん2012/03/12(月) 21:35:52.24ID:???
>>561
曖昧な方が遅いの?
0563nobodyさん2012/03/12(月) 21:39:49.55ID:???
遅いっていっても100万回ループしてやっと差がつく程度のレベルだろ
0564nobodyさん2012/03/12(月) 23:05:06.52ID:???
100万年ROMってやっと違いに気付くレベルの差か
0565nobodyさん2012/03/12(月) 23:21:31.89ID:???
>>560
CやJavaと同じ仕様で考えるなら===を使うけど
0566nobodyさん2012/03/12(月) 23:26:32.46ID:???
速度云々の問題では
0567nobodyさん2012/03/12(月) 23:33:17.93ID:???
=== の方が速いし、何より型違いによるバグに気付きやすいなるでしょ
0568nobodyさん2012/03/12(月) 23:39:56.43ID:???
勉強になったわ
0569nobodyさん2012/03/12(月) 23:40:39.28ID:???
使うなリストに入れとけ
==は使うな
0570nobodyさん2012/03/13(火) 00:00:54.82ID:???
別に遅くてもええわ
俺の糞だし
0571nobodyさん2012/03/13(火) 00:53:05.78ID:qKbE02zH
パーミッション設定について、ローカルサーバを立てて自分の
パソコンでphpやcgiを動かしてるだけなら特に意識しませんでしたが、
レンタルサーバーはパーミッション設定により動かなかったりします。
phpは644で動いてますが、cgiは644では動かず700にする必要が
ありました。phpとcgiの正しいパーミッション設定を教えて下さい。
0572nobodyさん2012/03/13(火) 01:08:14.04ID:???
PHPer、ダメポ。
0573nobodyさん2012/03/13(火) 01:28:49.79ID:???
>>561
1回で何秒くらい?
0574nobodyさん2012/03/13(火) 02:05:59.80ID:???
>>573
10万回くらいまわすテストしてみれば分かるかと。
1秒も変わらないと思うけど。

>>571
PHP関係ないよね
0575nobodyさん2012/03/13(火) 03:59:35.58ID:???
===の話で終わりか。
0576nobodyさん2012/03/13(火) 04:17:31.31ID:???
>>571
webサーバの設定次第だから
レンタルサーバの業者に聞けw
っていうか、普通はどっかに書いてある。
0577nobodyさん2012/03/13(火) 04:49:38.67ID:???
>>571
CGIなら実行権限がいる。
mod_phpなら実行権限はいらない。
0578nobodyさん2012/03/13(火) 07:11:14.46ID:???
>>565
うそつき

>>573-574
100万回まわして0.01秒
05795782012/03/13(火) 07:12:42.52ID:???
あ、嘘つき呼ばわりしてごめん
CやJavaで===使うっていってるのかとおもた

曖昧な比較ができるのがPHPのいいところ
ただし使う人はちゃんと仕様を理解しないとだめだね
0580nobodyさん2012/03/13(火) 07:21:37.09ID:l22JItfE
他言語で
変数A.関数(変数B)
っていう書式で関数使うノあると思いますが
同じのをPHPで書く場合は
関数(変数A, 変数B)
になるんですよね?
05815782012/03/13(火) 07:31:55.39ID:???
性能悪いPCでまわしたら0.05秒差がついた
パフォーマンス云々いうほどのものではないのにはかわりないが・・・

$start = microtime(true);
$a = 1;
for ($i = 0; $i < 1000000; $i++) {
if ($a === $i) {}
}
echo microtime(true) - $start;
0582nobodyさん2012/03/13(火) 08:01:05.73ID:???
>>580
オブジェクトでしょ?
>>581
1回あたり0.00000005秒の違いか
552の限界までパフォーマンスを追及する姿はかっこいいね!
0583nobodyさん2012/03/13(火) 08:22:23.41ID:???
型の違う$a = '1'での比較はどうだったのかと一応突っ込んでおくか
0584nobodyさん2012/03/13(火) 08:33:01.85ID:???
>>583
やるね
0585nobodyさん2012/03/13(火) 08:38:32.12ID:???
2倍と言ったら聞こえはいい
0586nobodyさん2012/03/13(火) 09:38:54.23ID:???
パフォーマンス云々の問題にすり替えるなよ
0587nobodyさん2012/03/13(火) 09:58:01.86ID:???
>>571
ほれみろWindows+XAMPPしか使ってこなかったろ
今すぐ仮想マシンを用意してubuntuでもdebianでも何でもいいからいれろ
0588nobodyさん2012/03/13(火) 09:58:58.13ID:???
>>578
速度のために===を使う奴はいねえよ
0589nobodyさん2012/03/13(火) 10:18:22.84ID:???
そもそも === が必要になることがこの言語のいびつさを物語っている
0590nobodyさん2012/03/13(火) 10:22:22.43ID:???
== 初心者向け
=== ベテラン向け
0591nobodyさん2012/03/13(火) 10:27:23.20ID:???
== ベテラン向け
=== 初心者向け
0592nobodyさん2012/03/13(火) 10:36:53.94ID:???
>>588
話の流れを見ろよ
0593nobodyさん2012/03/13(火) 10:38:07.99ID:???
必要な場面で必要なもの使えばいいだけやん
議論することでもなんでもないが

ちなみに===演算子はJavaScriptにもある
0594nobodyさん2012/03/13(火) 10:43:18.63ID:???
最初から===を使っておけば型の比較によるバグは起こらない
==を使うのは初心者だけにしておけ
0595nobodyさん2012/03/13(火) 10:57:32.85ID:???
>ちなみに===演算子はJavaScriptにもある
インタプリタにはほとんどある
もしくはそれに類する関数とか(JavaやC#でいうString.equalsのようなもの)
0596nobodyさん2012/03/13(火) 11:15:38.43ID:???
一歩上を目指したい人の為の使うなシリーズ

・外部サイトにアクセスするときfile_get_contentsは使うな
・比較に==は使うな
・エイリアスは使うな
・非推奨関数は使うな
・XAMPPは使うな
0597nobodyさん2012/03/13(火) 11:32:25.71ID:???
記述速度もそうだし、便利だから使えばいいじゃん。
問題はパフォーマンスにもそんな差が出ないとわかったところで
使う上ではちゃんと仕様を把握すればいいじゃんって話じゃん。
PHPerがくそだくそだって言われる最たるところは、ちゃんと仕様や内容を
把握した上でスクリプトくまねーところだろ。

>>581
明示的に一度==のときにstringで放り込んでから比較するとどーなる?
0598nobodyさん2012/03/13(火) 11:44:39.05ID:???
>>596
基礎からやりなおしてね
0599nobodyさん2012/03/13(火) 11:52:56.52ID:???
>>598による初心者講座

・file_get_contents推進します。効率なんて気にしてはいけません。UAもクッキーも送信できるのでおすすめ。
・比較に==をジャンジャン使いましょう。型の比較、特に""とnullの比較なんて気にしてはいけません
・エイリアスの使用を広めてあげましょう。自分が好きな関数名で書くのがいいですよ!
・非推奨関数なんて気にせず使いましょう。皆が使えば怖くない!
・XAMPPを積極的に導入しましょう!開発環境に時間を費やしてはいけません。本番と同じものを用意するのはドMがやる作業です。
0600nobodyさん2012/03/13(火) 12:05:16.21ID:???
必死
0601nobodyさん2012/03/13(火) 12:07:08.63ID:???
さりげなくfile_get_contents追加すんな
0602nobodyさん2012/03/13(火) 12:44:20.12ID:???
なんでfile_get_contentsいかんの?
0603nobodyさん2012/03/13(火) 12:58:23.04ID:???
curlのほうがパフォーマンス良&高機能
0604nobodyさん2012/03/13(火) 12:59:03.22ID:???
file_get_contntsは機能が弱いのにcurlより遅い
0605nobodyさん2012/03/13(火) 13:09:30.91ID:???
strpos($s, $c) == false
こう書いちゃう人いそうだな!
0606nobodyさん2012/03/13(火) 13:11:07.15ID:???
�d、そうか。パスワードとかクッキー使って相手にログインして、って
時にはcurl使ってるけど、ただ単に公開のhtmlとか取ってくる時は
file_get_contents使ってるわ。
0607nobodyさん2012/03/13(火) 13:35:22.69ID:???
ローカルのファイル丸ごと飲む以外にfile_get_contents使う人なんているんですか。
0608nobodyさん2012/03/13(火) 13:38:34.99ID:???
phpでパフォーマンスうんぬんはナンセンス。
パフォーマンスなら別言語をどうぞ。
0609nobodyさん2012/03/13(火) 13:54:00.73ID:???
http://net-beta.net/ubench/
みたいなのは、ほとんどただの自己満足に近い差しかないけどさ、
URLからの読込みのような部分は、大きな意味があるよ。遅いんだからさ。
0610nobodyさん2012/03/13(火) 14:12:03.48ID:lpLFUoKU
windows7を使って以下のようにcmdからphpを起動しています
cmd.exe /k C:\php\php.exe "C:\phpファイル.php"
この状態で、コマンドプロンプトからテキスト入力を受け取るにはどうしたらよいのでしょうか。

"C:\phpファイル.php"のコードを実行させつつ、キーボードから入力された値をscanf的な関数で取得させたいので
php -aで使える対話シェルはちょっと違います。
0611nobodyさん2012/03/13(火) 14:21:46.66ID:???
>>610
標準入力 PHPでググよろしね。
Linuxがどうとか出てくるかもせんけど、Winでも同じあるね。
0612nobodyさん2012/03/13(火) 14:30:50.20ID:???
fgets(STDIN);
0613498=523=5252012/03/13(火) 15:24:54.81ID:mq2kKsmo
>>550
>剰余の計算で===とかw
どのへんが面白いんですか。

>>551
>いくつかの突っ込みどころの中でそれを選んだ>>550はすごいな
ほかにどんな突っ込みどころがあります?

>>554
>===ではなくて ==と書きたいこともあるだろう?
ないですねぇ。

「==」って書いたら、後で見直した時に
何か理由があるのか単なる書き間違いなのか、考えなくてはいけないので面倒です。

同じ理由で、変数等の展開が不要な文字列のクォーテーションは必ずシングルで、
必要な場合だけダブルを使っています。

読みにくいので、文字列の中に変数を入れること自体あまりせずに sprintf を
使うことが多いですけどね。
■ このスレッドは過去ログ倉庫に格納されています