【php】part29【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2005/07/06(水) 09:57:54ID:0DucnAyH・新規質問の方は上げてください。age進行でお願いします。
・質問する際には環境も明記。
・正しい日本語で分かりやすく。
・レスがつかないからって逆切れする厨お断り。
・解決しなくてもこたえてもらったら礼を。
■本家
http://www.php.net/
■日本 PHP ユーザ会
http://www.php.gr.jp/
■PHP マニュアル
http://www.php.net/manual/ja/
■PEAR マニュアル
http://pear.php.net/manual/ja/
過去スレ, 関連スレ等>>2-10辺り
前スレでは、尾張の方でお世話になりました。
原因は唯のファイル名間違いでした。ダッセー俺OTZ
0451nobodyさん
2005/09/14(水) 02:47:04ID:???キャッシュを無効にするかどうかは状況に応じて行う
0453nobodyさん
2005/09/14(水) 07:52:09ID:???0454nobodyさん
2005/09/14(水) 22:38:17ID:???0455nobodyさん
2005/09/15(木) 22:03:07ID:???0456nobodyさん
2005/09/17(土) 18:10:46ID:KMtzZBBSとStep1の結果を、Step2で処理しsubmitで、Step3へすすんでいます。
----step2.php--- 判定を $hogeでするとして-
・・
if($hoge){
echo '<form ・・・action="step3.php">';
・・・・
echo "<INPUT type="submit" ・・・
・・・・
}else{
echo '<form ・・・action="step3.php">';
・・・・
Step2内での処理の結果、Step3に飛ばすにはどうすれば良いのでしょうか?
if($hoge){
step3.phpへ自動で飛ばす
}else{
----------------------------
これを
if($hoge){
require("step3.php"); exit;
}else{
と、しましたらstep3には飛べましたが
URL欄が http://www.*****/**/step2.php のままです。
URL欄も step3.php にしたいのですけど、、、
0457nobodyさん
2005/09/17(土) 18:46:50ID:???飛ばしたいならRefreshかLocation
0458456
2005/09/17(土) 18:58:32ID:???>>457さん。
ありがとう
headerでRefreshかLocation を吐き出します。<(_ _)>
0459nobodyさん
2005/09/17(土) 22:17:15ID:QWV6xr7FGETなら出来そうなのですが、POSTだと見当が付きません。
http://pc8.2ch.net/test/read.cgi/php/1120611474/5-11 みたいになるとは思いますが
出来たらその後にでも教えて欲しいっす、、
0460nobodyさん
2005/09/17(土) 22:27:51ID:???真面目にやるならfsockopen()を使ってHTTPを喋る。RFC2616あたり。
手っ取り早くしたいならpearのHTTP_Clientを使う。
0461459
2005/09/17(土) 22:30:14ID:???セッションで送って受け取ればいいんですね。
それ以外の方法をご存知の方いましたらよろしくお願いします。
0462nobodyさん
2005/09/17(土) 23:41:14ID:???それは「PHPファイル間のPOSTデータの受け渡し」ではないので
半分すら解決してない。何らかの解決だと考えてるのなら
もういっぺん>>459を正しく書き直し。
0463nobodyさん
2005/09/19(月) 13:44:36ID:???0466nobodyさん
2005/09/20(火) 10:22:16ID:Lq8tYe3w#./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-pgsql
...
(略)
...
Configuring extensions
checking whether to enable LIBXML support... yes
checking libxml2 install dir... no
checking whether libxml build works... no
configure: error: build test failed. Please check the config.log for details.
libxml2が古いのかとおもってapt-getしたけど最新版だし..
おしえてエロい(ry
0467nobodyさん
2005/09/20(火) 10:35:05ID:???(つд⊂)ゴシゴシ
_, ._
(;゚ Д゚) Please check...
0468nobodyさん
2005/09/20(火) 10:35:42ID:???vineは使ってないんで良く判らないんだがconfigureスクリプトに
--with-libxml-dir=<libxml2のインストール先>
を付けてみたら?
後、config.logを見てどんなエラーが出ているのか調べてみるとか。
0469nobodyさん
2005/09/20(火) 10:56:05ID:Lq8tYe3w--with-libxml-dir=/usr/lib
としてみたが
checking libxml2 install dir... /usr/lib
checking whether libxml build works... no
configure: error: build test failed. Please check the config.log for details.
となるね..
config.logには
collect2: ld returned 1 exit status
configure: failed program was:
#line 18663 "configure"
#include "confdefs.h"
char xmlInitParser();
int main() {
xmlInitParser();
return 0;
}
とかでてる。
xmlパーサーの初期化エラー?
0472468
2005/09/20(火) 11:44:37ID:???char xmlInitParser();
int main() {
xmlInitParser();
return 0;
}
を適当なファイル名.c で保存して
gcc ファイル名.c -L/usr/lib -lxml2
とやったらエラーの詳細は判ると思うけれど、Linux環境がない漏れには試せないな。。。
役立たずでスマソ。
0474nobodyさん
2005/09/20(火) 16:02:25ID:???0475nobodyさん
2005/09/20(火) 17:58:14ID:???<?php
// 定数の定義
$IMG_WIDTH = 300;
$IMG_HEIGHT = 20;
$SHADOW_MARGIN = 3;
if ($pct == "" || $pct < 0) $pct = 0;
if ($pct > 100) $pct = 100;
・・・・
// メモリの解放
ImageDestroy($im);
?>
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<body>
<form action="gd02-2.php" method="post"><p>
塗りつぶす割合は(0-100)?<input type="text" name="rate" size="4" maxlength="3" value="<?php echo $pct; ?>">%
<input type="submit" value="作成">
</p>
</form>
</body>
</html>
このthmlからの文字が出ないんです・・・どうすれば出ますか?
誰か助けてもらえないでしょうか
0476475
2005/09/20(火) 18:00:55ID:???htmlからのテキストボックスが表示されないんです。
どのように表示させればいいんでしょうか?
そして、なぜ表示出来ないんでしょうか?
0477nobodyさん
2005/09/20(火) 18:03:46ID:???別に問題ないように見える。HTMLにも問題はないようだよ。
0478nobodyさん
2005/09/21(水) 01:51:19ID:???0479nobodyさん
2005/09/21(水) 08:18:51ID:???多分・・・・の部分でエラーがあって実行されずに終わってる。
ini_set("display_error", 1);
でチェック
0480nobodyさん
2005/09/21(水) 13:24:18ID:???0481475
2005/09/21(水) 15:12:21ID:???<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<body>
この後の部分が実行されないんです。
途中省略の・・・の部分は普通に実行されて結果も表示されているんですよね。
0482nobodyさん
2005/09/21(水) 15:24:19ID:???と、ImageDestroy($im)の一行が見えることから、
・・・の部分で画像を出力していて、その下で更にhtmlを出力しようとしているんじゃないのかねぇ。
もしそうなら、無理。
0483nobodyさん
2005/09/21(水) 16:09:47ID:???>途中省略の・・・の部分は普通に実行されて結果も表示されているんですよね。
何が表示されているって言うんだい?
<html>より前に何かが表示されること自体おかしいとは思わないかい?
0484475
2005/09/21(水) 16:30:02ID:???>>481
<html>を最後の方にもってきてるのがダメなんでしょうか?
>>482
その下でさらにhtmlを出力させようとしているって
部分を詳しく教えてもらえるとありがたいです。
後で全文入力します。
0485475
2005/09/21(水) 16:31:41ID:???// 定数の定義
$IMG_WIDTH = 300;
$IMG_HEIGHT = 20;
$SHADOW_MARGIN = 3;
if ($pct == "" || $pct < 0) $pct = 0;
if ($pct > 100) $pct = 100;
$pct = $_POST["rate"];
// 新規画像の作成
$im = ImageCreate($IMG_WIDTH + $SHADOW_MARGIN, $IMG_HEIGHT + $SHADOW_MARGIN) or die ("Cannot Initialize new GD image stream");
// ベースとなる色の作成(白)と塗りつぶし
// 影を付けるために必要
$col = ImageColorAllocate($im, 255, 255, 255);
ImageFill($im, 0, 0, $col);
0486475
2005/09/21(水) 16:33:17ID:???$col = ImageColorAllocate($im, 192, 192, 192);
ImageFilledRectangle($im, $SHADOW_MARGIN, $SHADOW_MARGIN, ($IMG_WIDTH + $SHADOW_MARGIN), ($IMG_HEIGHT + $SHADOW_MARGIN), $col);
// 背景について、色の作成(暗い赤)と塗りつぶした矩形を張り付け
$col = ImageColorAllocate($im, 160, 0, 0);
ImageFilledRectangle($im, 0, 0, $IMG_WIDTH, $IMG_HEIGHT, $col);
// 前景について、色の作成(暗い緑)と塗りつぶした矩形を張り付け
$col = ImageColorAllocate($im, 0, 160, 0);
ImageFilledRectangle($im, 0, 0, ($pct * $IMG_WIDTH / 100), $IMG_HEIGHT, $col);
// テキストの出力
$text_color = ImageColorAllocate($im, 255, 255, 255);
$string = "$pct%";
$font = 5;
ImageString($im, $font, ($IMG_WIDTH - strlen($string) * imagefontwidth($font)) / 2, ($IMG_HEIGHT - ImageFontHeight($font)) / 2, $string, $text_color);
0487475
2005/09/21(水) 16:34:44ID:???if (ImageTypes() & IMG_GIF) {
Header("Content-type: image/gif");
Header("Cache-control: no-cache");
ImageGIF($im);
}
elseif (ImageTypes() & IMG_PNG) {
Header("Content-type: image/png");
Header("Cache-control: no-cache");
ImagePNG($im);
}
elseif (ImageTypes() & IMG_JPEG) {
Header("Content-type: image/jpeg");
Header("Cache-control: no-cache");
ImageJPEG($im, "", 10);
}
elseif (ImageTypes() & IMG_WBMP) {
Header("Content-type: image/vnd.wap.wbmp");
Header("Cache-control: no-cache");
ImageWBMP($im);
}
else {
die("イメージはサポートされていません");
}
// メモリの解放
ImageDestroy($im);
?>
0488475
2005/09/21(水) 16:36:09ID:???<html>
<body>
<form action="gd02-2.php" method="post"><p>
塗りつぶす割合は(0-100)?<input type="text" name="rate" size="4" maxlength="3" value="<?php echo $pct; ?>">%
<input type="submit" value="作成">
</p>
</form>
</body>
</html>
0489nobodyさん
2005/09/21(水) 17:07:44ID:???100行ほどのテキストデータがあり、そのなかの90行目だけが空行だったとします。
このとき、1から89行までを別の配列として取り出したいのですが
テキストデータが$textdata、取り出し先が$newarrayとして
for($i=0;$i<count($textdata);$i++){
if($textdata[$i]==""){break;}
$newarray[]=$textdata[$i];
}
または
$i=0;
while($textdata[$i]!=""){
$newarray[]=$textdata[$i];
$i++;
}
とやってみたんですが、どっちも90行目のみ抜けた99個の配列になってしまいます。
どうしたら89個の配列となって取り出せるんでしょうか(´д`;)
0490489
2005/09/21(水) 17:08:24ID:RvtD9P6V0492489
2005/09/21(水) 17:16:49ID:???それを考慮したらうまくいきました。
0493nobodyさん
2005/09/21(水) 17:21:01ID:???Header("Content-type: image/***");
このヘッダーの後は画像のデータとみなされますのでhtmlが表示されるわけがないのです。
if (ImageTypes() & IMG_GIF) {
$file = "image.gif";
ImageGIF($im、"./img/".$file);
}
elseif (ImageTypes() & IMG_PNG) {
$file = "image.png";
ImagePNG($im, "./img".$file);
}
とかして一旦ファイルに保存して
echo '<img src="./img/'.$file.'">';
で表示すればいい
0494nobodyさん
2005/09/22(木) 01:02:30ID:???<html>
<head></head>
<body>
<p>画像↓</p><br />
<img src="http://hoge/picture.php?abc=piyo&def=punyu "><br />
<p>エトセトラ・・・</p>
</body>
</html>
//--------------------following picture.php--------------------
<?php
/*画像作成コード*/
header("Content-type:image/***");
print($img);//$img : 画像バイナリ
?>
こうならいけるabcとかGETはjavaで弄るか
htmlの前にphpおいて適当に変数にパラメタをぶち込んでechoするとか
0495nobodyさん
2005/09/22(木) 17:26:18ID:???0496nobodyさん
2005/09/24(土) 04:46:04ID:???↓
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
0497nobodyさん
2005/09/24(土) 14:06:31ID:9gGfIW9pいったん表示してから
また後のを読み込むことは
PHPでできますか?
0498nobodyさん
2005/09/24(土) 14:08:20ID:???0499nobodyさん
2005/09/24(土) 14:40:12ID:9gGfIW9pどういう関数でそれができますか?
0500nobodyさん
2005/09/24(土) 14:42:48ID:h0yprU63解決法をできれば。・゚・(つД`)・゚・。
if($_POST['send']=="送信")
{
if($_POST['tmp']!=="")
{
$writedata="";
$fp=file($bbs_log);
foreach($fp as $rec)
{
$writedata.=$_POST['maxcnt'];
$writedata.=",";
$writedata.=$_POST['user_name'];
$writedata.=",";
$writedata.=$_POST['user_mail'];
$writedata.=",";
$writedata.=$_POST['delpass'];
$writedata.=",";
$writedata.=$_POST['tmp'];
$writedata.="\r\n";
}
$fp=fopen($bbs_log,"w");
fwrite($fp,$writedata);
fclose($fp);
}
}
0501nobodyさん
2005/09/24(土) 14:50:31ID:???マニュアルからfopenのmode=wの部分を抜粋。
> 'w' 書きこみのみでオープンします。ファイルポインタをファイルの 先頭に置き、ファイルサイズをゼロにします。
> ファイルが存在しない 場合には、作成を試みます。
0502nobodyさん
2005/09/24(土) 15:08:44ID:???何をやりたいのか良く判らないな。
$bbs_log という名前からするとファイルの末尾に追加するのが正しいように思えるんだけど、
foreach($fp as $rec) でループさせると元のファイルの行数分、新規に書き込んだ行が
複製されてしまうよね。
「ファイル書き換え」って書いているから、その言葉が正しいとすると書き換える条件が
どこにも出てこないし。。。
元のファイルの内容、新規データの内容、処理後の期待するファイルの内容の3つを
カキコしてもらった方が早いんではないかな。
0503nobodyさん
2005/09/24(土) 15:31:58ID:aOKQyrNZ頭をゼロパディングして文字列に入れたいのですが、
どうやったらいいですか?
0506キラーハンター
2005/09/24(土) 16:55:39ID:3ud88b51また、その動画を3gppやAMCに変換するやり方(またはモジュール)も知っておられる方は
教えていただけると幸いです。
よろしくお願いいたします。
0507nobodyさん
2005/09/24(土) 17:23:28ID:???0510nobodyさん
2005/09/25(日) 15:12:41ID:lpUMQVsIPHP4.311、MySQL4.023でセッションはDBに積んでいきます。
ポータルサイトなどでみる、ページ表示に関わるユーザのカスタマイズ値(地域選択、興味ある
分野の優先表示、好みのCSS選択などのこまごまとした変数群)は全部セッションに格納すべきでしょうか?
それとも、最低限の情報(ユーザを一意に限定出来るメアドと認証状態)のみを格納して、
あとは認証がTrueの場合のif文の中であらためてDBから引っ張り込んでくるべきでしょうか?
前者の方がいかにもすっきりしますが、なんでもかんでもセッションに格納すんなという情報も
書籍などで見受けられます。
「複数ページで必要な変数は全部ぶっ込め派」と「最低限格納して、あとは引っ張ってくる派」は
どちらが主流なのでしょうか?
0511nobodyさん
2005/09/25(日) 16:25:50ID:???0512nobodyさん
2005/09/25(日) 16:49:29ID:???それらの値の取得または計算によって算出するのはJavaScript側でする作業だよ。
その上でそれらの値をform.submit()などを使ってPHPに送出すればよい。
0513nobodyさん
2005/09/26(月) 07:53:08ID:???ありがとうございます。
screen.widthなどで取得するところまではわかったのですが、フォームではなく、これをページ読み込み時に自動的に送る方法がよくわかりません。
0514nobodyさん
2005/09/26(月) 08:14:56ID:???ページ表示時にJavaScriptを実行させて、そのデータをもった別のリクエスト(img srcで画像呼び出し)を鯖に送る。
<!--
document.write("<img src='〜log.php?"
// 解像度等を name=valueの形式に整形して文字列連結
+ "' width=1 height=1>");
// ->
0516nobodyさん
2005/09/26(月) 12:11:34ID:???結局は、管理人の好みな希ガス。
業務用とかであれば、誰がどのCSSを好んで使ってるかとか、
そういった、いわゆるマーケティングもしないといけないから、
結局ユーザー側に発行してもDBにも入ってる、じゃあDBだけでいいか、ってなる事が多い。
発行するデータ量と、発行対象になるおよそのクライアント数によっても、
違いはあると思うし、それぞれだと思うよ。
0517nobodyさん
2005/09/26(月) 13:48:22ID:???言語を変えましょうかという話が出たとき死ぬので、手広くはやれないと思う。
0518nobodyさん
2005/09/26(月) 14:08:00ID:???HTTP_FORWARDED変数はどのように取得するのでしょうか?
0521nobodyさん
2005/09/26(月) 15:26:30ID:???ありがとうございます。無い場合、エラーログに記録されてログがどんどん肥大化してしまうのですが、
無い場合でもエラーを出さないコーディングの方法はないでしょうか?
0522nobodyさん
2005/09/26(月) 15:34:25ID:???is_set()で確認。
E_NOTICEレベル(定義無しで参照した時はこのレベルに含まれる)のエラーを記録しないようにするって手もあるかな。
0523nobodyさん
2005/09/26(月) 15:38:41ID:???isset()で未定義でないことを確認してから処理する(オススメ)
if (isset($_SERVER['HTTP_HOGE']) && 〜)
エラーを抑止する(ハマることも)
error_reporting(E_ALL ^ E_NOTICE);
getenvを使う(環境変数なら)
getenv('HTTP_HOGE')
0524522
2005/09/26(月) 15:49:14ID:???0525nobodyさん
2005/09/26(月) 22:36:36ID:???こんなのもあるよ
@ $_SERVER['HTTP_〜']
セットされてない場合、エラー吐かずにnullとして扱われる
(文字列として扱えば空文字、数値として扱えば0として扱われる)
0526nobodyさん
2005/09/27(火) 12:11:14ID:???細かいことだけど、E_ALL ^ E_NOTICE って本当は行儀いい書き方じゃないよな。
公式マニュアルにもそう載ってるから困ったもんだ。
それが悪いとまでは言わないが、意味から考えても、汎用性から考えても、E_ALL & ~E_NOTICE でしょ。
0527nobodyさん
2005/09/27(火) 13:26:40ID:dcy1hLQRフレームなしで、セッションはウマくいくのですが、
フレーム内に表示すると別々のSIDとなります。
どうすればよろしいのでしょうか?
┌───┐ ┌───┐ ┌───┐
│A.php │.>│B.php │.>│C.php │.>・・・
└───┘ └───┘ └───┘
セッション変数は、うまく流れる(全て同一SID)
↓
フレーム内に表示
┌┬───┐ ┌┬───┐ ┌┬───┐
││A.php │.>││B.php │.>││C.php │.>・・・
└┴───┘ └┴───┘ └┴───┘
セッション変数が渡らない
(全部別々SID)
0528nobodyさん
2005/09/27(火) 13:46:44ID:???確かにE_ALL ^ E_STRICTなんて書くやつがいるかもしれない。
ということでマニュアルにはちゃんと E_ALL & ~E_NOTICE が使ってありますぜ。
http://jp.php.net/manual/ja/ref.errorfunc.php
0529nobodyさん
2005/09/27(火) 13:51:14ID:???いつ変わったんだろう。
0531527
2005/09/27(火) 14:23:15ID:???┌┬───┐
││A.php │
└┴───┘
↑
right.htm
なので、A.php、B.php ・・・ に target指定を追加して
<form method="post" action="*.php" target="right.htm">
と、記述しましたが、、
駄目です。
0532nobodyさん
2005/09/27(火) 14:32:05ID:???<form target="right">
こんな感じにしたらって事。
0533nobodyさん
2005/09/27(火) 14:32:33ID:???,. -一'´ ,fl〃リk'ニヽ、
/ ,-、 '}jリ'^´ レ',ハヘ
' ,」ハl|レ' /,:仁テ,ハ、
j厂リ'-、、 ッ一' ̄´ l
∠_−、>∠、 |
∠_ー 、ン´ ̄`ll l
r‐イ−、ン'´ リ 丿
V/ / ぃ
\/__ム〉
0534527
2005/09/27(火) 14:43:20ID:???<form ・・・ action="*.php?<? echo htmlspecialchars(SID); ?>"
と、SIDを明示しましたらOKでした。
セキュリティ上、かなりちょっと不安ではありますが・・・
0535nobodyさん
2005/09/27(火) 15:11:14ID:???このへんの影響じゃまいか
>With PHP > 5.0.0 E_STRICT with value 2048 is available. E_ALL does NOT include
error level E_STRICT.
0536nobodyさん
2005/09/27(火) 15:27:38ID:???http://jp.php.net/manual/ja/function.error-reporting.php
は依然xorだな
>>528のとこはand notだけど元々はどうなってたんだろう?
とりあえずxorやめれってこったわな
0537nobodyさん
2005/09/27(火) 15:56:44ID:???スクリプト内で設定する場合でも、合わせて数値で指定しちゃってるな。
>エラーレポートレベル
0539527
2005/09/27(火) 22:00:54ID:???0これかな。。
でもどうやって使うのか知らないけど。
session_write_close
セッションでフレームセットを使用する場合、
このロックのためにフレームがひとつずつロードされるような経験をするでしょう。
http://manual.xwd.jp/function.session-write-close.html
0540nobodyさん
2005/09/27(火) 22:09:10ID:oCiYbKLV0echo "これは$home 円です";
0541nobodyさん
2005/09/27(火) 22:19:16ID:???0どちらでも好きな方で。
echo "これは${home}円です";
echo "これは" . $home . "円です";
キツイ言い方かもしれないが、下段の方法が思いつかないのは
プログラムを書く人間としてはチトツライと思う。
0542nobodyさん
2005/09/27(火) 22:44:27ID:???<?php
function getmicrotime(){
list($usec, $sec) = explode(" ",microtime());
return ((float)$sec + (float)$usec);
}
$time_start = getmicrotime();
$data = '';
$home = '';
for ($i=0; $i < 1000000; $i++){
$data = "これは".$home."円です"; // 3.41249799728
// $data = 'これは'.$home.'円です'; // 3.57745289803
// $data = "これは${home}円です"; // 6.93447685242
// $data = "これは$home 円です"; // 7.57996416092
}
$time_end = getmicrotime();
$time = $time_end - $time_start;
echo $time;
?>
0543nobodyさん
2005/09/27(火) 22:49:34ID:???より、
// $data = 'これは'.$home.'円です'; // 3.57745289803
の方が遅いのが謎だなー。
0544540
2005/09/27(火) 22:59:47ID:oCiYbKLVまだ始めて三日なもんで。。
ifとforとswitchしか使えない身です。。。。
本当に有難うございます
0545nobodyさん
2005/09/27(火) 23:07:35ID:???そんなもんただの誤差。大抵はシングルクォートの方が早い。
ただ>>542から言えることは、シングルクォートとダブルクォートを躍起になって使い分けてる香具師は無意味ってことだな。
0547nobodyさん
2005/09/28(水) 03:02:31ID:???うちだとこんな感じだし、それぞれ幅が上下0.05sec程度あるから、誤差だな
//$data = "これは".$home."円です"; // 1.72963690758
//$data = 'これは'.$home.'円です'; // 1.76355910301
//$data = "これは${home}円です"; // 2.18645095825
//$data = "これは$home 円です"; // 2.1633310318
>>546
関数呼び出しはちょいと遅かった
0548nobodyさん
2005/09/28(水) 07:16:13ID:???気になって色々測定してみたら、総じてシングルクォートよりダブルクォートの方が早いことがわかった。
まずシングルクォートには謎のオーバーヘッドがあるらしく、
for ($i = 0; $i < 1000000; $i ++) '';
for ($i = 0; $i < 1000000; $i ++) "";
を比べると、だいたい2.46秒vs2.44秒でダブルクォートのほうが0.02秒ほど早い。
(ってことは一個につき20ナノ秒しか変わらんわけだが・・・)
それから
'aaaaaa ... aaaaaa'
"aaaaaa ... aaaaaa"
って感じでaを1000000個並べてみたけど、8.03秒vs8.02秒でやっぱりダブルクォートの方が早い。
自分は今まで、変数の展開も改行もタブも含まない場合には意識的にシングルクォートを使うようにしていたが、実はそれは無意味であることがわかった。
たぶんシングルクォートによる文字列リテラルの表記の利点は、「$」および「"」をエスケープせずに使える、という点以外には全くないのではないだろうか。
$_SERVER['REMOTE_ADDR']とかさ、$_SERVER["REMOTE_ADDR"]でいいじゃん。
echo 'Hello, World'まで書いてみたら、「あ、やっぱ改行入れようかな」、なんてダブルクォートに直すのとか馬鹿みたいじゃないか。
とにかく測定には誤差がかなりあるので「ダブルクォートのほうが早い」という言い方は不適切かもしれない。
それでも、変にシングルクォートとダブルクォートを使い分ける悪習慣は治して、なるべくダブルクォートに統一するほうが効率や読みやすさも向上するだろうなぁと思った。
おしまい。
0550nobodyさん
2005/09/28(水) 07:55:07ID:???0551nobodyさん
2005/09/28(水) 10:05:16ID:???(゜д゜)<あらやだ
>>548はPHP5.0.4/WinXP/Athlonでやったんだけど、
レンサバのPHP4.3.11/Linux/i686でやってみたらシングルクォートのがちと早いみたい。
まー100万みたいなバカデカイ数でやって0.01秒差とかだし、ダブル・シングルのどっちを使うかでパフォーマンスに影響を与えることはなさそう。
環境依存な面もあるのかもしれないけど、大差ないでしょう。たぶん。
■ このスレッドは過去ログ倉庫に格納されています