【PHP】下らねぇ質問はここに書き込みやがれ 66
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/03/16(日) 17:23:27ID:???PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 65
http://pc11.2ch.net/test/read.cgi/php/1203854597/
◆質問する時の注意
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を必ず明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
・偽者防止に必ずIDを表示(メール欄に何も記述しない)、若しくはトリップをつける事。
◆質問後の注意
・偽者防止に必ずIDを表示(メール欄に何も記述しない)、若しくは質問時のトリップをつける事。
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0557nobodyさん
2008/03/31(月) 23:47:37ID:???一人でも綺麗に書いた方がイイ!
0560nobodyさん
2008/04/01(火) 00:53:09ID:+ectGcI2中括弧で括っても駄目でした。 御教示よろしくお願いします。
$sql = <<< _EOD_
INSERT INTO table2ch VALUES(
'{$entry["name"]}',
'{$entry["kana"]}'
)
_EOD_;
0562nobodyさん
2008/04/01(火) 01:26:48ID:???出るよ
$entry = array('name'=>'a', 'kana'=>'b');
$sql = <<< _EOD_
INSERT INTO table2ch VALUES(
'{$entry["name"]}',
'{$entry["kana"]}'
)
_EOD_;
echo $sql;
↓結果
INSERT INTO table2ch VALUES( 'a', 'b' )
0563nobodyさん
2008/04/01(火) 01:31:50ID:???ヒアドキュメントを使って全てまとめて出力するのと、
変数部分のみを<?php echo $hoge;?>のようにして出力するのでは
どらが高速でしょうか?
0564nobodyさん
2008/04/01(火) 01:36:37ID:???0565nobodyさん
2008/04/01(火) 01:42:15ID:???死ぬほどわずかでも速い方が精神衛生上良いので、
もし分かれば教えて欲しいです
0566nobodyさん
2008/04/01(火) 02:05:45ID:???俺ならテンプレートエンジン使うし使わない場合でもHTMLを変数に格納して変数展開はドット演算子で接続するかな。
0567nobodyさん
2008/04/01(火) 07:02:29ID:???速くしたけりゃ中間言語コンパイラ使うとかもっと抜本的な
解決策を探るべきだよ。
0568nobodyさん
2008/04/01(火) 07:07:25ID:???愛なんていらないの
優しい言葉が欲しいだけなの
0569nobodyさん
2008/04/01(火) 07:11:52ID:???if($list["$i"] == ""){
$list["$i"] = "1234";
}
$list["$i"] == "" この式がおかしいのでしょうか?
もし$list["$i"]がなければ処理という式はどう書けばいいでしょうか?
0571569
2008/04/01(火) 07:32:15ID:???配列またはオブジェクトをキーとして使用することはできません。
これを行なうと、warning: Illegal offset type を発生します。
だって
0572nobodyさん
2008/04/01(火) 08:03:38ID:???0573nobodyさん
2008/04/01(火) 09:18:24ID:QfLzxrc0content-typeをtext/html以外にして出力すれば、
ダウンロード自体はさせることが出来ましたが、
ファイル名が、その処理をするphpのuriになります
リクエストを受けたPHP側で、ダウンロードさせるファイル名を決定するには
どうしたらいいのでしょうか?
0574nobodyさん
2008/04/01(火) 09:19:25ID:???http://jp2.php.net/header
0575nobodyさん
2008/04/01(火) 15:07:37ID:???>>1読んでID出そうな
isset
empty
だろうか、やりたいことがはっきり分からない
問題の出るきちんと動く最小ソースを張れ
0578nobodyさん
2008/04/01(火) 17:59:15ID:QfLzxrc0ブラウザ側からコネクションが切断された場合、
それを検出するにはどうしたらいいですか?
TCPだからapacheはコネクションの切断を検知してますよね
だからといっていきなりPHPの処理を止めることはないような気がします
何らかのイベントが飛んでくる…?
0579nobodyさん
2008/04/01(火) 18:06:41ID:???マニュアル最高ォォォ!!!
http://www.php.net/manual/ja/features.connection-handling.php
0580nobodyさん
2008/04/01(火) 20:20:45ID:???0581nobodyさん
2008/04/01(火) 20:30:50ID:???そういえば犬の出るバージョンがあったな
0583nobodyさん
2008/04/01(火) 20:39:09ID:???0584nobodyさん
2008/04/02(水) 00:57:36ID:YnvkKP4HArray ( [0] => Array ( [0] =>test.php ) [1] => Array ([0] => Array ( [0] => test2.php ) ) )
と、階層化されている配列の場合、ひとつの配列内にまとめるには
どうすればいいのでしょうか?(階層は多階層とします)
0587nobodyさん
2008/04/02(水) 07:03:03ID:???ありがとうございました
「デフォルトの動作はリモートクライアントとの接続が断となった際に
スクリプト の実行は破棄されます」とのこと
ちょっと予想外です
今まで、スクリプトが中断される可能性を考えずに組んできたので
予想外の不整合の種が埋め込まれていたかも・・・不安
0588nobodyさん
2008/04/02(水) 07:21:07ID:OgmDUsd7echo preg_replace("/<p>(.+)<\/p>/", "<div>\\1</div>", $str);
<div>あいうえお</div><div>かきくけこ</div>と置き換えたいのに、
<div>あいうえお</p><p>かきくけこ</div>となってしまいます。
どこをどうしたらいいのかアドバイスお願いします。
0589nobodyさん
2008/04/02(水) 07:23:28ID:???シャットダウン関数を定義した場合、リモートユーザーが STOP ボタンを押した後、
「次にスクリプトが何か出力を行おうとした場合、」
PHP は接続が破棄されたことを検知し、 シャットダウン関数がコールされます
何も出力されなかったら接続の破棄は検知されない?
出力を伴わない作業であれば、ある程度アトミックに動作する?
0591589
2008/04/02(水) 11:51:06ID:???やっぱり出力しない時は切断を検知しないんですね
出力がない限り通信が発生しないから
0593nobodyさん
2008/04/02(水) 13:56:21ID:???0594nobodyさん
2008/04/02(水) 14:08:09ID:???やろうと思えば出来るが、普通はやらないな。
0597nobodyさん
2008/04/02(水) 14:51:00ID:???0598nobodyさん
2008/04/02(水) 15:46:08ID:???これほど自民党の一党独裁の問題点が分かりやすい現象は無いなw
0599nobodyさん
2008/04/02(水) 16:01:35ID:???春休みにも程があるぞ
0602595
2008/04/02(水) 16:12:49ID:???>>596が即レスしてきたのには笑えた。
ネットワーク関連のスレだと、これくらいの煽りだと完全にシカトだよ。
アプリケーションエンジニアがネットワークエンジニアに比べて、
如何に忍耐力がないかを示せたと思う。
技術力の根底は、忍耐力。もう少し反省して我慢強くなれよ。そうじゃないと、何をやっても大成しない。
0604nobodyさん
2008/04/02(水) 16:15:10ID:MqFvUnGs雰囲気悪くするだけの雑談をしたいのなら他所でしてください
0606nobodyさん
2008/04/02(水) 16:42:06ID:???0607nobodyさん
2008/04/02(水) 16:43:01ID:???0609nobodyさん
2008/04/02(水) 18:02:16ID:Exm72Bty[141]=> "AAAAAAAAAAAAAAAAAAAACCC1111111111111111111111111111111"
[142]=> "11111111111111111111111111111"
[143]=> "11111111111111111111111111111111111111DDDAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAACCC111111111111111111111111111111111"
[144]=> "11111111111111111111111111111"
[145]=> "11111111111111111111111111111111111111DDDAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAACCC111111111111111111111111111111111"
このような時、"CCC111111111111111111111111111111111111111111111DDD"という
始点終点の一意の単語を目安に、ひと塊ずつ抜き出すには
どのようなやり方がよいのでしょうか?
[143]のように纏まらせたい終端と、始点が混ざっていて混乱しています。
0610nobodyさん
2008/04/02(水) 18:05:03ID:???0611nobodyさん
2008/04/02(水) 18:17:37ID:Exm72Bty[2]=> "一人目です</td><td>名前"
[3]=> "<a href=hoge>hage</a></td></tr></table><br /><hr /><table><tr><td>"
とあった場合
$取得一個目 = "<table><tr><td>一人目です</td><td>名前<a href=hoge>hage</a></td></tr></table>"と
抜き出したり...
0612nobodyさん
2008/04/02(水) 18:45:37ID:???0613584
2008/04/02(水) 18:52:54ID:YnvkKP4H上手く行きません。。どうすればいいか教えていただけないでしょうか。
function hairetu($val){
for($i=0;$i<count($val);$i++){
if(is_array($val[$i])){
$array = hairetu($val);
}else{
$array[] = $val[$i];
}
}
return $array;
}
$array = array("バナナ","リンゴ","みかん");
$array[1] = array("赤","青");
$fruit = hairetu($array);
print_r($fruit);
0614nobodyさん
2008/04/02(水) 19:49:28ID:???まず、過程で変数の中身がどうなってるかvar_dumpでもしろ
あと
http://www.php.net/manual/ja/language.variables.php
の「変数のスコープ」でも読め
0615nobodyさん
2008/04/02(水) 20:30:58ID:oWuCtB30英語文字列の先頭だけ小文字から大文字に変換する関数はありませんか?
あったら教えてください。お願いします。
0616nobodyさん
2008/04/02(水) 20:48:09ID:???マニュアル嫁
http://jp.php.net/manual/ja/function.ucfirst.php
0617nobodyさん
2008/04/02(水) 20:52:43ID:oWuCtB30ども
0618nobodyさん
2008/04/02(水) 20:52:48ID:???0621nobodyさん
2008/04/02(水) 22:13:20ID:XY6vuSiH実は一行にした場合、スマートにA点B点間を切り取る書き方がわかりません
またA点B点になるものが20個くらいつながっていますので
0623nobodyさん
2008/04/02(水) 22:51:28ID:njUPskxT$txt = implode("", $array);
$j = 0;
$str = "";
for ($i = 0; $i < strlen($txt); $i++) {
$string = substr($txt, $i, 1);
if ($str == $string) {
$data[$j] .= $string;
} else {
$j++;
$data[$j] = $string;
}
$str = $string;
}
$data に文字列が固まって入っている。 これでいいんじゃない?
0625nobodyさん
2008/04/03(木) 04:39:25ID:NUyg6E0X大まかに5つぐらいにカテゴリわけできるデータがあります。
すべて一つのファイルにまとめてそれを読み書きするのと
カテゴリごとに5ファイルにわけて読み書きするのではどちらが早いでしょうか?
例えば1カテゴリあたり1MBだしたらどうなんでしょう
マイクロ秒単位ぐらいしかかわらないとかいうかんじなんでしょうか
0626nobodyさん
2008/04/03(木) 04:47:03ID:???1つのファイルのほうが早いに決まってる
ベンチとらないと正確な数値はわからないが気にする必要はないと思うけど
ただ管理するファイル数が多くなると凡ミスで1つのファイルが狂うと
他のファイルにも影響が出る可能性があるからデータは1つにまとめたほうがいい
DBを利用できるならDBを使ったほうが早いし管理も楽
0627nobodyさん
2008/04/03(木) 05:27:31ID:???>関数呼び出しのオーバヘッドを考慮すれば
>1つのファイルのほうが早いに決まってる
今だに、requireやincludeを使っているのだろうかw
0628nobodyさん
2008/04/03(木) 06:45:56ID:cpVDKaLEミクシィのコミュニティのようなのを作りたいのですが
なにを勉強すればいいのでしょうか?
0629nobodyさん
2008/04/03(木) 07:01:00ID:???ありがとうございます
1つのファイルでやってみます
>>627
includeで呼び出しますが何かまずいのでしょうか?
0630625
2008/04/03(木) 07:02:00ID:NUyg6E0X625です
0631nobodyさん
2008/04/03(木) 08:29:48ID:???気にしなくていい
>>627がアホなだけ
関数を含め何かをを呼び出すということはなんかしらオーバヘッドが発生している
requireやincludeに限ったことではない
0632nobodyさん
2008/04/03(木) 09:07:40ID:???使わない方法があるなら俺にもぜひ教えてもらいたい。
たまに他人のソース見て疑問に思うんだが、
includeやrequireの形跡はないのに、ソース中に見当たらない変数を使用してたりする。
(echo $hoge;とだけ書いてるのにちゃんと$hoge;が表示されてる。$hogeがどこで定義されてるかは不明。)
これってどういう方法使ってやっているの?
importでもないし、namespaceなんかもないし・・・
0633621
2008/04/03(木) 09:40:11ID:2nubDXXGニュアンスはだいたいわかるのですが
欲しい形としては、ループする文字列だけ格納ではなく(AAAとか)
-----
<h2>ああああ</h2><p>ああああああああ</p><br /><hr /><h2>そそそ</h2><p>ととと</p><br /><hr />
<h2>ててて</h2><p>いいい</p><br /><hr />....
-----
となっているものを いらないところをスルーして
$data[ 1 ] => "<p>ああああああああ</p>"
$data[ 2 ] => "<p>ととと</p>"
$data[ 3 ] => "<p>いいい</p>"
と格納できれば・・・。
(この例だと <p> </p>という二つの文字列の間、および文字列そのものを含んだ部分の切り取り)
0634nobodyさん
2008/04/03(木) 09:47:21ID:???<h2>ててて</h2><p>いいい</p><br /><hr />";
preg_match_all("|<p>(.*?)</p>|si", $string, $matchs);
print_r($matchs);
0635nobodyさん
2008/04/03(木) 09:57:16ID:???0636nobodyさん
2008/04/03(木) 12:01:29ID:???0637nobodyさん
2008/04/03(木) 12:50:10ID:???自分が無知なのを棚に挙げて、人をアホ扱いですかw
どんだけスイート脳なんだよ。
>>632
__autoloadでぐぐれ
0638nobodyさん
2008/04/03(木) 13:00:44ID:2nubDXXGばっちりでした。マーベラスです。ありがとうございました。
0639nobodyさん
2008/04/03(木) 13:26:53ID:???なんで、オーバーヘッドの話から、
requireやincludeの話になってんの?w
わずかな差しかないが、__autoloadを使ったほうが、
クラスの存在のチェックなどをするぶん、
requireやincludeよりも遅いが。
0641nobodyさん
2008/04/03(木) 14:11:22ID:???ファイルの容量は気にしなくていいってことなのか
でもファイルがでかいならオーバーヘッドうんぬんより分割した方がいいと思うが
0642626
2008/04/03(木) 14:13:06ID:???1つのファイルに書き込むより5つのファイルにに書き込む方がオーバヘッドが大きい
書き込みの際にはDBのようなトランザクション処理ができないので
1つのファイルに書き込み失敗するとデータの整合性が狂うしロールバックもできない
(どれか失敗したら全てのファイルのデータ数を数えて少ないとこにあわせて末尾から削除とかもできるが面倒)
よって1つのファイルにデータをまとめて1度だけ書き込みを行ったほうがよい
ということを言ったつもりだったんだけど
0643nobodyさん
2008/04/03(木) 14:20:07ID:???0644nobodyさん
2008/04/03(木) 15:21:07ID:BSwpnKE2PHPまたはCGIみたいなのありませんか?
自分のホームページがあまりにもアクセス数が少ないので、
自動でカウンターだけでも上げて気休めしてみよーかなと。
0645nobodyさん
2008/04/03(木) 15:24:34ID:???0647644
2008/04/03(木) 15:37:18ID:???パソコンを立ち上げなくても、サーバー側で自動でアクセスしてみたいのです。
cronというのは どんな感じですか?
0648nobodyさん
2008/04/03(木) 15:41:38ID:???1日に86400ほど増える。
0649nobodyさん
2008/04/03(木) 15:44:02ID:???レンタルカウンターだとしたら無駄に負荷かかって迷惑だからやめとけ
0650nobodyさん
2008/04/03(木) 15:49:06ID:???0652nobodyさん
2008/04/03(木) 16:14:02ID:???0653nobodyさん
2008/04/03(木) 17:11:38ID:2KfD0E2x$test="テスト";
print<<<EOF
{$test}
EOF;
以上を実行したら、「テスト」が出力されると思いますが、
$testの中身をfunction関数を実行した結果にしたいと思います
サンプルとして以下のようなfunctionをつくり、
function testFunc($i){
if($i==1){return "結果1";}else{return "結果2";}
}
print<<<EOF
{$testFunc(1)}
EOF;
などとしてみたのですが、うまくいきません(「結果1」と表示させたい)
どうしたらいいんでしょう? ご回答よろしくお願いします
0656nobodyさん
2008/04/03(木) 17:48:38ID:2KfD0E2xありがとうございます
{$test(1)}みたいに、引数を持たせることは出来ないんでしょうか? 最終的には
for($i=0;$i<10;$i++){
print <<<EOF
{$test($i)}
EOF;
}
みたいな感じで動的に変化する処理を考えてたので…… 弱ったなぁ
根本的にやり直ししかないのかな、、
■ このスレッドは過去ログ倉庫に格納されています